Seguimos buscando a Arshak. Ayudanos compartiendo!
Encuesta no oficial de docentes
Resultados de la encuesta no oficial de docentes
Probaste el SIGA Helper?

Donar $100 Donar $200 Donar $500 Donar mensualmente


Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Buscar en el tema
Generacion Aleatoria.
Autor Mensaje
Imakuni Sin conexión
Presidente del CEIT
Boxes tastes like mush
********

Ing. en Sistemas
Facultad Regional Córdoba

Mensajes: 7.021
Agradecimientos dados: 124
Agradecimientos: 129 en 85 posts
Registro en: Jul 2008
Mensaje: #1
Generacion Aleatoria.
Directamente voy al grano chicos :P


Resulta que necesitaria un "Generador aleatorio de discos"

Que que es eso??? Basicamente lo unico que hace es crear una lista imaginaria con carpetas y archivos.

El tema es que estoy buscando alguna forma de ordenar la informacion, para que parezca "Real" (Digamos, que dentro de la carpeta "Imagenes" no haya una base de datos, o cosas similares)

(Para el que quiera saberlo, es para el concurso de CODEAR :P).

No hace falta codigo (aunque se agradece en C# :P), con una idea copada es mas que suficiente.

Muchas gracias, por lo menos por leerme!
17-07-2008 15:37
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Dem0 Sin conexión
( ͡° ͜ʖ ͡°)
._.
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 4.980
Agradecimientos dados: 9
Agradecimientos: 195 en 75 posts
Registro en: Apr 2008
Mensaje: #2
Re: Generacion Aleatoria.
Para randomizar una estructura de archivos lo mejor que se me ocurre es randomizar un árbol. Cada nivel de árbol tendría que corresponder a un conjunto de carpetas/archivos, cada una con una probabilidad de aparecer.

Antes que nada estaría bueno que especifiques todas las posibles carpetas y archivos que irían a aparecer, y las restricciones que determinen las posibles posiciones de esas carpetas/archivos en el disco (tiene que ser flexibles, porque sino no se podrían distribuir "al azar")

Por ejemplo:
Para el nivel 1 (root) las carpetas {"Archivos de Programas", "Windows", "Documentos"}, que pueden tener probabilidad del 100% ya que son carpetas impresindibles, con posiciones no negociables.

Dentro de "Archivos de Programas" podés tener X cantidad de sub-carpetas correspondientes a diferentes programas, cada una con un porcentaje de posibilidad de aparecer (tiras un numero random por carpeta, y si supera cierto valor aparece).

Lo mismo para el resto de las carpetas de nivel 1, nada más que tendrías que revisar que sean carpetas que tengan sentido (dentro de "Windows" no tendría sentido una carpeta "Mis Imagenes").

Dependiendo la sub-carpeta podés tener predefinido los archivos que contiene (por ejemplo: un juego tiene toda una serie de achivos que son necesarios), o también pueden ser random (una carpeta de imagenes puede tener una cantidad de imágenes variables).
--

Espero que sea lo que necesitas y se entienda a lo que me refiero. Después si tengo tiempo lo paso a algún algoritmo.

Saludos
17-07-2008 17:50
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
pablo Sin conexión
ModdIng
Hombre de ingenio (?)
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 1.637
Agradecimientos dados: 0
Agradecimientos: 24 en 14 posts
Registro en: Apr 2008
Mensaje: #3
Re: Generacion Aleatoria.
La orientación que te dio Dem0 está muy buena. La estructura de árboles la daría casi por sentada, porque hoy en día todo sistema de archivos funciona así.
Depende también cuanto sepas también de proba, porque veo que sos ingresante (sin discriminar eh! xD), pero por ejemplo, para muchas carpetas la cantidad de archivos podría estar dada por una función de probabilidad... ya que ponele, en el caso de las de música, la cantidad oscila altamente entre los 10 y 20 temas, debido a que muchas veces uno crea carpetas con los discos de artistas.
Lo mismo con los discos de artistas, la cantidad media estaría en 3 ponele, y bueno, sería menor para valores menores y mayores.

Una función de probabilidad lo que hace es asignar a cada valor una cierta probabilidad de aparecer. Acá como los valores de entrada (número de archivos o carpetas) son enteros, la función es mucho más simple. Lo más fácil es armar un par de funciones a mano, según el tipo de carpeta que generen. Por ejemplo, la función "GenerarAlbumes" tendría como 30% de proba para generar 3 discos (digo, me suena a que es un promedio lógico en general), y a medida que es menor o mayor, la probabilidad decrece (ponele, 20% para 2 o 4, 10% para 1 y 5, 3% para 6... vos le asignas los valores que querés, fijandote siempre que los valores sumen 100%). Después lo único que hacés es generar un valor aleatorio equiprobable entre 0 y 100 con la función random() o análoga del lenguaje, y después te fijas, según el valor que tocó, cuánto generar. Si te tocó menos de 30%, generás 3 carpetas de discos, si te tocó entre 30% y 50% (un 20%), generás 2 discos, entre 50% y 70% generás 4, y así sucesivamente según el criterio que hayas determinado.

Hay un programa que nunca usé pero que escuché que te sirve para generar funciones de probabilidad en función a los datos que das como entrada (que en este caso sería, cantidad de albumes por artista), y se llama "@Risk" (lo recomendaban en la materia "Simulación" de 4º).

En otros casos, como dijo DemO, te conviene asignar una probabilidad por CADA carpeta, por ejemplo, el WinAMP, suponete que lo tiene instalado el 60% de la gente, entonces le ponés 60% de proba para aparecer.

Lo mismo podés hacer para ciertos artistas en una carpeta "Música". Cada carpeta de artista tiene una probabilidad X de aparecer, y después, la cantidad de albumes dentro la sacas con la función "GenerarAlbumes" y, dentro de cada Album, usas una "GenerarTemas" que siga un criterio similar. Algo parecido se me ocurre, por ejemplo, para generar unas carpetas para los trabajos prácticos de la facultad, ya que tenés años, adentro materias, y adentro tps.

A mí se me ocurre que, siguiendo el árbol, primero generás el root / raíz con proba de 100%, despues como dijo Dem0, ciertas carpetas las poner por default con 100% tb (o podrías asignar 80% a que es un Windows, 20% un Linux, y generar los nombres de carpetas según el que salga =P), y bueno, así por cada nodo del árbol seguís agregando hijos hasta que generas sólo archivos.

Me imagino algo así:

(ojo, es puro pseudocódigo)




GenerarArchivo(...){
... // no lo pensé mucho =P
}

GenerarCarpeta(padre, nombre, probDeTenerCarpetasHijas){

carpeta = new carpeta()
padre.AgregarCarpeta(carpeta)
GenerarArchivos(carpeta)
if random(0..100) > probDeTenerCarpetasHijas{
GenerarSubcarpetas(carpeta)
}
}

GenerarArchivos(carpeta){
... // dependería de cada tipo de carpeta, como dijimos antes, por ejemplo, Temas

for i=0 to cantidadArchivosGeneradas-1 {
carpeta.AgregarArchivo(archivo(i))
}
}

GenerarSubcarpetas(carpeta){
... // también dependería de cada tipo de carpeta, por ejemplo, Albumes
... // En esta función se vuelve a llamar a "GenerarCarpeta" cada vez que sea necesario, y se devuleve la cantidad de generadas

for i=0 to cantidadCarpetasGeneradas-1 {
carpeta.AgregarCarpeta(carpeta(i))
}
}




Fijate que GenerarCarpeta llama (a veces, según la probabilidad que se desea) a GenerarSubcarpetas y esta llama de nuevo a GenerarCarpeta, por lo cual sigue una estructura recursiva (necesaria para armar el árbol). Esa probabilidad que se pasa de una carpeta a otra podría ir reduciendose poco a poco, para asegurarse que la estructura no anide miles de carpetas en cascasda que ya pierdan todo el sentido xD.

Bueno, lo pensé medio rápido así que capaz bardeé muy mal, pero espero estar ayudando más de lo que mareo xD...
17-07-2008 22:36
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Dem0 Sin conexión
( ͡° ͜ʖ ͡°)
._.
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 4.980
Agradecimientos dados: 9
Agradecimientos: 195 en 75 posts
Registro en: Apr 2008
Mensaje: #4
Re: Generacion Aleatoria.
Teseracto escribió:Directamente voy al grano chicos :P


Resulta que necesitaria un "Generador aleatorio de discos"

Que que es eso??? Basicamente lo unico que hace es crear una lista imaginaria con carpetas y archivos.

El tema es que estoy buscando alguna forma de ordenar la informacion, para que parezca "Real" (Digamos, que dentro de la carpeta "Imagenes" no haya una base de datos, o cosas similares)

(Para el que quiera saberlo, es para el concurso de CODEAR :P).

No hace falta codigo (aunque se agradece en C# :P), con una idea copada es mas que suficiente.

Muchas gracias, por lo menos por leerme!

¿Lo querés hacer para que un personaje del juego entre a una computadora?

Capás si nos das más datos te podemos ayudar mejor, sinó mirá que nos cebamos :P

Saludos
17-07-2008 22:53
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
leandrodg Sin conexión
Il Capo Cannoniere
Lost Admin
**********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 2.421
Agradecimientos dados: 11
Agradecimientos: 52 en 20 posts
Registro en: Mar 2008
Facebook Twitter YouTube
Mensaje: #5
Re: Generacion Aleatoria.
RPG + Generación aleatoria de carpetas del disco... = WTF? Yo quiero ver en qué termina eso... =D

LeandroDG

Mi blog: http://www.logue.com.ar/blog
Ingeniero en Sistemas
17-07-2008 23:43
Visita su sitio web Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Chaito Sin conexión
Secretario General
Sin estado :(
*******

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 825
Agradecimientos dados: 0
Agradecimientos: 6 en 5 posts
Registro en: Jul 2008
Mensaje: #6
Re: Generacion Aleatoria.
No entendi una sola palabra.. jjajajajaja
18-07-2008 16:34
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Imakuni Sin conexión
Presidente del CEIT
Boxes tastes like mush
********

Ing. en Sistemas
Facultad Regional Córdoba

Mensajes: 7.021
Agradecimientos dados: 124
Agradecimientos: 129 en 85 posts
Registro en: Jul 2008
Mensaje: #7
Re: Generacion Aleatoria.
Cita:¿Lo querés hacer para que un personaje del juego entre a una computadora?

Capás si nos das más datos te podemos ayudar mejor, sinó mirá que nos cebamos :P

Saludos

Exactamente eso.

La idea es similar a uno que ya se presento (Y me cago la idea, pero me jodo por llegar tarde al concurso :P). Vendria a ser un hacker que obtiene acceso remoto a otras PCs y chorradas asi :P.

La idea de usar estructura en arbol la habia pensado (Es dificil no imaginarsela...
... Pero lo de las probabilidades no :P (ya que si firmo analisis 1, recien ahora voy a poder cursar proba). Aunque ahora estoy pensando bien bien en como implementarla :P (Ya que me estoy manejando con bases de datos para guardar stats y cosas asi (Y de paso, zafo de tener que crear un algoritmo para "Guardar partida" :P))


Muchas gracias por las respuestas (y cualquier nueva info se agradece).

Y no... no soy ingresante :P, ahora estoy luchandola con sintaxis xD.
18-07-2008 16:46
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Dem0 Sin conexión
( ͡° ͜ʖ ͡°)
._.
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 4.980
Agradecimientos dados: 9
Agradecimientos: 195 en 75 posts
Registro en: Apr 2008
Mensaje: #8
Re: Generacion Aleatoria.
Lo de las probabilidades no es tán complejo. Una carpeta/archivo tiene una probabilidad de 0 a 1 de aparecer. Suponete que la probabilidad es 0,6, tirás un número random (que generalmente está implementado como un número entre 0 y 1) y si es mayor a 0,6 la carpeta/archivo aparece.

Lo más dificil y largo es determinar todas las restricciones y reglas genéricas (que no tienen nada que ver con probabilidad), como por ejemplo que en la carpeta "Mis Imágenes" aparescan un número variable de solo archivos imágen.

PD:
Las probabilidades se manejan así:

ejemplos:
0,05 = 5%
0,1 = 10%
0,45 = 45%
1 = 100%

Perdoná si son cosas muy boludas que ya sabías :P

Saludos
18-07-2008 17:25
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
pablo Sin conexión
ModdIng
Hombre de ingenio (?)
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 1.637
Agradecimientos dados: 0
Agradecimientos: 24 en 14 posts
Registro en: Apr 2008
Mensaje: #9
Re: Generacion Aleatoria.

Off-topic:
jaja que boludo, leí el "ingresante" debajo de tu imagen y me olvidé que eran nombres asignados por cantidad de posts xDD...


Si tan sólo se pudiera graficar en el foro... jeje, te mostraría gráficamente algún modo más simple de entenderlo. Básicamente (muy) es como dijo Dem0, y todo parte de eso... lo único que tendrías que agregar, siguiendo mi visión del problema, es el concepto de función de probabilidad, pero no es nada del otro mundo, y en este caso es bastante intuitivo porque tenes cantidades enteras de elementos.
19-07-2008 00:32
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
leandrodg Sin conexión
Il Capo Cannoniere
Lost Admin
**********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 2.421
Agradecimientos dados: 11
Agradecimientos: 52 en 20 posts
Registro en: Mar 2008
Facebook Twitter YouTube
Mensaje: #10
Re: Generacion Aleatoria.
Los gráficos en el foro ya vendrán... jejeje... como parte de una super reestructuración =D

LeandroDG

Mi blog: http://www.logue.com.ar/blog
Ingeniero en Sistemas
19-07-2008 11:45
Visita su sitio web Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
pablo Sin conexión
ModdIng
Hombre de ingenio (?)
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 1.637
Agradecimientos dados: 0
Agradecimientos: 24 en 14 posts
Registro en: Apr 2008
Mensaje: #11
Re: Generacion Aleatoria.

Off-topic:
Jaja gracias Lean, sólo tiro comentarios pretenciosos al aire que capaz algún día se cumplan, total sé que en el foro sos omnipresente xDD
19-07-2008 17:34
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Desert69 Sin conexión
Presidente del CEIT
Sin estado :( / "Anarquia...
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 2.477
Agradecimientos dados: 230
Agradecimientos: 346 en 207 posts
Registro en: Jun 2008
Mensaje: #12
Re: Generacion Aleatoria.

Off-topic:
tanto cuesta colgar un png en imageshack???

[Imagen: a2.php]
[Imagen: 971aa6599664453c05cb3e42d58bbc0eo.jpg]
22-07-2008 00:51
Visita su sitio web Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Imakuni Sin conexión
Presidente del CEIT
Boxes tastes like mush
********

Ing. en Sistemas
Facultad Regional Córdoba

Mensajes: 7.021
Agradecimientos dados: 124
Agradecimientos: 129 en 85 posts
Registro en: Jul 2008
Mensaje: #13
Re: Generacion Aleatoria.
Bueno, mision cumplida.

Logre hacerme un generador aleatorio de carpetas :P.

[Imagen: carpetasbm5.th.jpg]

se muove... funciona, y es copado :P

Al final hice lo siguiente:
A- una base de datos en donde hay una lista con los sigueintes campos:

Nombre de carpeta - Probabilidad de que salga - Tipo de datos - Subcarpeta de (1 y 2) - Es root.

Tipo de datos es un numero, del cual depende despues los archivos que voy a crear.
Si estoy en system32, crea cierta clase de archivos, con ciertas extensiones, que no van a estar en Mis imagenes, por ejemplo.

Subcarpeta de, es para ver donde puede crear cada carpeta, hay dos campos por si puede ser subcarpeta de varias. NULL si puede ser en cualquier lado a menos que....

Es Root: 1 si es una carpeta que, de existir, siempre esta en el rooot (ejemplo: "archivos de programa", "etc", "media").
-1 si puede estar en el root o como subcarpetas (por ejemplo, una carpeta de "juegos", puede estar ahi, o en "archivos de programa").
'0' si solo puede ser subcarpeta.

Despues, todo lo demas lo hace dos funciones, una para crear las carpetas del root, y otra para ir creando las subcarpetas y los archivos, que se llama recursivamente, como ya dijeron mas arriba.

Los nombres de los archivos los resolvi asi: Depndindo del "tipo de dato", meti un switch con un case por cada numero...con cada uno de ellos lle d un archivo txt de nombrs, y otro de extensiones, y los cruza.
En el caso de los archivos de sistema, hay "Sufijos" y los mezcla con otros sufijos, y luego le agrega la extension (osea, mezcla dos palabras :P)... si s fijan en la carpeta system32, hay palabras que se repiten decenas de veces (WIN, MSN, OLE, SETUP, REG...). Es el mismo metodo que use con los archivos de documentos, solo que entre palabra le agrega un "-".
Con las imagenes, crea una fecha y le mete una extension al azar, tambien de un archivo.

Muchas gracias por los consejos gentes :thumbup3: . El juego esta viento en popa... y lo terminaria antes, si no fuese que tengo recuperatorio d analisis :'( .

Cualquier cosa, pidan codigo que no hay problema... (ahora, si me entienden eso ya es otra cosa :P).
27-07-2008 18:41
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
brunodiaz Sin conexión
The Dark Knight
Bla
**********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 7.707
Agradecimientos dados: 92
Agradecimientos: 384 en 135 posts
Registro en: May 2008
Mensaje: #14
Re: Generacion Aleatoria.
Teseracto escribió:Tipo de datos es un numero, del cual depende despues los archivos que voy a crear.
Si estoy en system32, crea cierta clase de archivos, con ciertas extensiones, que no van a estar en Mis imagenes, por ejemplo.

no quiero ser molesto, pero en mis imagenes hay de todo menos imagenes =P
27-07-2008 19:16
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Imakuni Sin conexión
Presidente del CEIT
Boxes tastes like mush
********

Ing. en Sistemas
Facultad Regional Córdoba

Mensajes: 7.021
Agradecimientos dados: 124
Agradecimientos: 129 en 85 posts
Registro en: Jul 2008
Mensaje: #15
Re: Generacion Aleatoria.
No, esos son los archivos de mis documentos xD.

Fijate que "mis imagenes" esta con un mas (como si no se hubiese desplegado)

El arbol muestra todo, no solo las carpetas.

No se muestra como en el explorador d windows :P
27-07-2008 19:24
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Buscar en el tema
Enviar respuesta 




Usuario(s) navegando en este tema: