Alguien me lo explique por favor

21/05/2007 - 21:27 por Roberto Palacios | Informe spam
Buenas, necesito generar números aleatorios entre 0 y uno y para ello uso el
siguiente código:
while (contador<duplicaciones+1)

{

Random dado = new Random();

double aleatorio=dado.NextDouble();

aleatorios.Add(aleatorio);

...

}

Luego, fuera del while, recorro el vector para ver los aleatorios (los
escribo en un txt) y resulta que los valores del vector son todos iguales,
el mismo número. Ante dicha situación pongo un breakpoint en el while, y
cualmí sorpresa que al ejecutar paso a paso todo se realiza perfecto,
distintos números aleatorios al final en el vector. Repito la opoeración sin
el breakpoint y vuelvo a tener todos los elementos repes. En el while no se
vuelve a tocar el vecto, solo esa instrucción Add, y fuera solo lo recorro
para escribirlo en el txt.

¿Alguien puede explicarme esto?



Un saludo a todos

Roberto
 

Leer las respuestas

#1 RFOG
21/05/2007 - 21:39 | Informe spam
Aisss.

EL generador de números aleatorios del PC es un pseudogenerador, por lo
que si no indicas nada siempre empezará por el mismo sitio.

Random r=new Random(<seed>)
while(contador<(dupilcaciones+1)
aleatorios.Add(r.NextDouble();

...


En el bucle estás incializando un generador cada vez, sin especificar
semilla, por lo que siempre empezará por el mismo sitio Aparte de que
estás creando una infinitud de objetos sin mucho sentido que luego el
recolector de basura se volverá loco a la hora de recuperarlos.

Por cierto, si te lees la documentación sería mejor...

En Mon, 21 May 2007 21:27:40 +0200, Roberto Palacios
escribió:

Buenas, necesito generar números aleatorios entre 0 y uno y para ello
uso el
siguiente código:
while (contador<duplicaciones+1)

{

Random dado = new Random();

double aleatorio=dado.NextDouble();

aleatorios.Add(aleatorio);

...

}

Luego, fuera del while, recorro el vector para ver los aleatorios (los
escribo en un txt) y resulta que los valores del vector son todos
iguales,
el mismo número. Ante dicha situación pongo un breakpoint en el while, y
cualmí sorpresa que al ejecutar paso a paso todo se realiza perfecto,
distintos números aleatorios al final en el vector. Repito la opoeración
sin
el breakpoint y vuelvo a tener todos los elementos repes. En el while no
se
vuelve a tocar el vecto, solo esa instrucción Add, y fuera solo lo
recorro
para escribirlo en el txt.

¿Alguien puede explicarme esto?



Un saludo a todos

Roberto









Visita mi blog principal: http://rfog.blogsome.com
Y este sobre programación: http://geeks.ms/blogs/rfog
Libros, ciencia ficción y programación
El que dé rosas de comer al burro, cobrará con un rebuzno.

Preguntas similares