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

Preguntas similare

Leer las respuestas

#6 RFOG
22/05/2007 - 08:52 | Informe spam
En Tue, 22 May 2007 00:25:27 +0200, Alfredo Novoa
escribió:

Hola,

On Mon, 21 May 2007 21:39:34 +0200, RFOG
wrote:

EL generador de números aleatorios del PC es un pseudogenerador,



Hombre, el generador es un generador de verdad, pero de números
pseudoaleatorios :-)




:-P Vale. Lapsus dislexiae. Y seguro que termina en la caquilla del de la
RTL del visual Studio que, aunque rápido, sólo genera 0xffff números
diferentes, con la de generadores pseudoaleatorios (ahora lo he dicho
bien) mucho mejores.

por lo
que si no indicas nada siempre empezará por el mismo sitio.



Tampoco tendría por que ser así necesariamente. Si les hubiese dado la
gana, podrían haber hecho que el constructor por defecto cogiese como
semilla el valor del "timer" o algo parecido. Aunque está mejor como
está.




Hombre, no creo que creando una instancia del generador para cada número
que genera...

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



Pues si, y también las normas de etiqueta de los grupos. Por ejemplo
los títulos de los hilos deben de ser descriptivos, y antes de
preguntar hay que buscar la respuesta por uno mismo.





Saludos





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.
Respuesta Responder a este mensaje
#7 Alfredo Novoa
22/05/2007 - 09:59 | Informe spam
On Tue, 22 May 2007 00:10:48 -0400, "principiante"
wrote:

Te clonaron o te estás respondiendo vos mismo?



Me respondo a mi mismo.
Respuesta Responder a este mensaje
#8 Alfredo Novoa
22/05/2007 - 10:16 | Informe spam
On Tue, 22 May 2007 08:52:57 +0200, RFOG
wrote:


:-P Vale. Lapsus dislexiae. Y seguro que termina en la caquilla del de la
RTL del visual Studio que, aunque rápido, sólo genera 0xffff números
diferentes, con la de generadores pseudoaleatorios (ahora lo he dicho
bien) mucho mejores.



Me imagino que utilizará un generador congruencial lineal como todo el
mundo. La semilla es de 32 bits, luego son 0x100000000 números.


Saludos
Respuesta Responder a este mensaje
#9 RFOG
22/05/2007 - 10:57 | Informe spam
El del .NET no lo sé, el de la RTL del Visual C++ es:

/***
*int rand() - returns a random number
*
*Purpose:
* returns a pseudo-random number 0 through 32767.
*
*Entry:
* None.
*
*Exit:
* Returns a pseudo-random number 0 through 32767.
*
*Exceptions:
*
*******************************************************************************/

Y si tienes el vs prof o superior tu mismo puedes ver el código fuente
en <bla>Visual Studio 8\vctl\srcand*


Alfredo Novoa avait écrit le 22/05/2007 :
On Tue, 22 May 2007 08:52:57 +0200, RFOG
wrote:


:-P Vale. Lapsus dislexiae. Y seguro que termina en la caquilla del de la
RTL del visual Studio que, aunque rápido, sólo genera 0xffff números
diferentes, con la de generadores pseudoaleatorios (ahora lo he dicho
bien) mucho mejores.



Me imagino que utilizará un generador congruencial lineal como todo el
mundo. La semilla es de 32 bits, luego son 0x100000000 números.


Saludos





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
Respuesta Responder a este mensaje
#10 Alfredo Novoa
22/05/2007 - 11:13 | Informe spam
On Tue, 22 May 2007 10:57:50 +0200, RFOG
wrote:

El del .NET no lo sé, el de la RTL del Visual C++ es:

/***
*int rand() - returns a random number
*



Ah, vale. El de .NET si es de 32 bits, pensaba que serían iguales.

*Purpose:
* returns a pseudo-random number 0 through 32767.



Que cutre, es peor que el del Spectrum :-)


Saludos
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida