UTNianos

Versión completa: Generacion Aleatoria.
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Páginas: 1 2
Teseracto escribió: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

mi error no vi el mas
esta perfectisimo lo tuyo!
Ah, el dato:

se duplicaban datos no se porque.

Si tenia dos carpetas con el mismo tipo de datos(en el caso era Wallpapers y Mis Imagenes) me duplicaba los archivos (estaban los mismos en una y en otra carpeta). Igual con los archivos de sistema.

Lo solucione haciendome por mi cuenta una funcion:

int generarnumaleatorio(int limite)

que agarra el siguiente numero aleatorio, lo multiplica por un factor, hace modulo limite, y modifica el factor.

El codigo ahora es asi:



/// <summary> Genera un numero aleatorio entre 0 y hasta </summary>
random num;
int factor = 7;

private int GeneraNumAleatorio(int hasta)
{
factor += 3;
if (Num == null)
Num = new Random();
int numero = Num.Next(0, hasta * factor);
return (numero % (hasta + 1));
}




Solo cambie eso, por lo que el error estaba en la creacion dl numero aleatorio..
¿Alguien sabe porque? ¿Acaso no me deberia tirar todos numeros distintos siempre?
jaja, suerte que te sirvió lo de probabilidad.

Consejo: para generar un número aleatório lo único que necesitas es generar un número entre 0 y 1, y lo multiplicás por el valor "hasta".

Ejemplo: Querés un número entre 0 y 700, randomizas un {0,684963784769374543}. Hacés (0,684963784769374543 * 700) = 479,4746493385621801.

De esta manera no es necesario implemetar un parámetro "hasta", en teoría tendría que funcionar:


Num = new Random()
Num = Num * hasta



Saludos
Dem0 escribió:jaja, suerte que te sirvió lo de probabilidad.

Consejo: para generar un número aleatório lo único que necesitas es generar un número entre 0 y 1, y lo multiplicás por el valor "hasta".

Ejemplo: Querés un número entre 0 y 700, randomizas un {0,684963784769374543}. Hacés (0,684963784769374543 * 700) = 479,4746493385621801.

De esta manera no es necesario implemetar un parámetro "hasta", en teoría tendría que funcionar:


Num = new Random()
Num = Num * hasta



Saludos

Ojo... no es tan así... hay que revisar el lenguaje, generalmente el Random da un valor entre 0 y 1 (el 0 inclusive, el 1 exclusive). Por lo cual, para obtener por ejemplo un número entre 0 y 700, debería obtener la parte entera del resultado de multiplicar el Random obtenido por 701.

En general:

Entre 0 y X: Floor(Random * (X+1))
Entre 1 y X: 1 + Floor(Random * X)

Saludos!
Leandro.

PD: Si el random Incluye al 1 entre sus respuestas, las posibilidades son volver a obtener un valor random (ignorar las veces que salga 1) o tomarlo como valor correspondiente al último número posible. De cualquier manera no debería incluir el 1 como resultado posible porque no tendría sentido probabilístico incluir tanto el 0 como el 1.
en realidad si la imagen del random es [0;1) (aprovechemos lo poco q recuerdo de analisis) para conseguir numeros en [0;700] lo que hacés es redondear el random()*700... osea, depende si usas redondear, o si usas "parte entera"... si usas parte entera, si... multiplica por 701
No, si redondeás no te da bien... porque por ejemplo la probabilidad de que el redondeo te de 0 es la mitad que la probabilidad que te de 1... (porque da 0 entre 0 y 0,5, pero da 1 entre 0,5 y 1,5). Por lo cual redondear no es la mejor idea, es mejor usar la parte entera.

Saludos!
Leandro.
Páginas: 1 2
URLs de referencia