Random

10/05/2004 - 17:29 por Alberto | Informe spam
Observo que el método Random de la clase del mismo nombre admite un
parámetro que se llama Seed que es la inicialización de los números
aleatorios. ¿tiene alguna utilidad? estoy observando que aunque no se le
pase nada, funciona correctamente y la secuencia no se repite.

Gracias

Preguntas similare

Leer las respuestas

#1 Octavio Hernandez
10/05/2004 - 17:51 | Informe spam
Alberto,

Efectivamente, la versión Random() sin argumentos genera una secuencia a
partir de una semilla nueva que depende del reloj.

A priori no parece que tenga mucha utilidad la otra variante, pero ¿quién
sabe? a lo mejor alguien en algún momento necesita que se repita nuevamente
la misma secuencia que acaba de utilizar... Si solo existiera el constructor
sin parámetros, esto no se podría hacer.

Salu2,

Octavio

"Alberto" escribió en el mensaje
news:
Observo que el método Random de la clase del mismo nombre admite un
parámetro que se llama Seed que es la inicialización de los números
aleatorios. ¿tiene alguna utilidad? estoy observando que aunque no se le
pase nada, funciona correctamente y la secuencia no se repite.

Gracias


Respuesta Responder a este mensaje
#2 e-lores
11/05/2004 - 08:21 | Informe spam
La verdad es que es muy útil.

La generación de número aleatorios depende fuertemente de la semilla (Seed)
utilizada. A partir de esta construye una función que va generando números
pseudoaleatorios que es lo que obtenemos. Si no ponéis ninguna se toma a
partir de la hora del reloj.

Podeis hacer una prueba si quereis:

Random rnd1 = new Random();
Random rnd1 = new Random();
Random rnd1 = new Random();


"Octavio Hernandez" escribió en el mensaje
news:
Alberto,

Efectivamente, la versión Random() sin argumentos genera una secuencia a
partir de una semilla nueva que depende del reloj.

A priori no parece que tenga mucha utilidad la otra variante, pero ¿quién
sabe? a lo mejor alguien en algún momento necesita que se repita


nuevamente
la misma secuencia que acaba de utilizar... Si solo existiera el


constructor
sin parámetros, esto no se podría hacer.

Salu2,

Octavio

"Alberto" escribió en el mensaje
news:
> Observo que el método Random de la clase del mismo nombre admite un
> parámetro que se llama Seed que es la inicialización de los números
> aleatorios. ¿tiene alguna utilidad? estoy observando que aunque no se le
> pase nada, funciona correctamente y la secuencia no se repite.
>
> Gracias
>
>


Respuesta Responder a este mensaje
#3 e-lores
11/05/2004 - 08:24 | Informe spam
La verdad es que es muy útil.

La generación de número aleatorios depende fuertemente de la semilla (Seed)
utilizada. A partir de ésta construye una función que va generando números
pseudoaleatorios que es lo que obtenemos. Si no ponéis ninguna se toma a
partir de la hora del reloj.

Podeis hacer una prueba si quereis:

Random rnd1 = new Random();
Random rnd2 = new Random();
Random rnd3 = new Random();
Random rnd4 = new Random();
Random rnd5 = new Random();

al hacer esto el ordenador toma la misma semilla (normalmente) y las
secuencias de números que se generarán para cada objeto random serán las
mismas.

Un saludo.
e-lores.


"Octavio Hernandez" escribió en el mensaje
news:
Alberto,

Efectivamente, la versión Random() sin argumentos genera una secuencia a
partir de una semilla nueva que depende del reloj.

A priori no parece que tenga mucha utilidad la otra variante, pero ¿quién
sabe? a lo mejor alguien en algún momento necesita que se repita


nuevamente
la misma secuencia que acaba de utilizar... Si solo existiera el


constructor
sin parámetros, esto no se podría hacer.

Salu2,

Octavio

"Alberto" escribió en el mensaje
news:
> Observo que el método Random de la clase del mismo nombre admite un
> parámetro que se llama Seed que es la inicialización de los números
> aleatorios. ¿tiene alguna utilidad? estoy observando que aunque no se le
> pase nada, funciona correctamente y la secuencia no se repite.
>
> Gracias
>
>


Respuesta Responder a este mensaje
#4 Octavio Hernandez
11/05/2004 - 21:16 | Informe spam
Hola,

Ojo, en el ejemplo que pones te da la misma semilla porque estás creando un
objeto Random inmediatamente detrás del otro, y transcurre tan poco tiempo
entre una creación y otra que el valor del reloj del sistema (a partir del
que se calcula la semilla) es (casi) el mismo.

Prueba con este fragmento:
Random rnd1 = new Random();

System.Threading.Thread.Sleep(30000);

Random rnd2 = new Random();

MessageBox.Show(rnd1.Next(100000).ToString());

MessageBox.Show(rnd2.Next(100000).ToString());

Si comentas la línea del Sleep(), los dos Random tendrán la misma semilla y
por lo tanto generarán la misma secuencia de enteros. Pero si la dejas, las
semillas serán totalmente distintas...

Salu2,

Octavio

"e-lores" escribió en el mensaje
news:
La verdad es que es muy útil.

La generación de número aleatorios depende fuertemente de la semilla


(Seed)
utilizada. A partir de ésta construye una función que va generando números
pseudoaleatorios que es lo que obtenemos. Si no ponéis ninguna se toma a
partir de la hora del reloj.

Podeis hacer una prueba si quereis:

Random rnd1 = new Random();
Random rnd2 = new Random();
Random rnd3 = new Random();
Random rnd4 = new Random();
Random rnd5 = new Random();

al hacer esto el ordenador toma la misma semilla (normalmente) y las
secuencias de números que se generarán para cada objeto random serán las
mismas.

Un saludo.
e-lores.


"Octavio Hernandez" escribió en el mensaje
news:
> Alberto,
>
> Efectivamente, la versión Random() sin argumentos genera una secuencia a
> partir de una semilla nueva que depende del reloj.
>
> A priori no parece que tenga mucha utilidad la otra variante, pero


¿quién
> sabe? a lo mejor alguien en algún momento necesita que se repita
nuevamente
> la misma secuencia que acaba de utilizar... Si solo existiera el
constructor
> sin parámetros, esto no se podría hacer.
>
> Salu2,
>
> Octavio
>
> "Alberto" escribió en el mensaje
> news:
> > Observo que el método Random de la clase del mismo nombre admite un
> > parámetro que se llama Seed que es la inicialización de los números
> > aleatorios. ¿tiene alguna utilidad? estoy observando que aunque no se


le
> > pase nada, funciona correctamente y la secuencia no se repite.
> >
> > Gracias
> >
> >
>
>



Respuesta Responder a este mensaje
#5 e-lores
12/05/2004 - 08:29 | Informe spam
!Exacto!

Era un ejemplo del uso de la semilla.

Saludos.
Ernesto.


"Octavio Hernandez" escribió en el mensaje
news:%

Hola,

Ojo, en el ejemplo que pones te da la misma semilla porque estás creando


un
objeto Random inmediatamente detrás del otro, y transcurre tan poco tiempo
entre una creación y otra que el valor del reloj del sistema (a partir del
que se calcula la semilla) es (casi) el mismo.

Prueba con este fragmento:
Random rnd1 = new Random();

System.Threading.Thread.Sleep(30000);

Random rnd2 = new Random();

MessageBox.Show(rnd1.Next(100000).ToString());

MessageBox.Show(rnd2.Next(100000).ToString());

Si comentas la línea del Sleep(), los dos Random tendrán la misma semilla


y
por lo tanto generarán la misma secuencia de enteros. Pero si la dejas,


las
semillas serán totalmente distintas...

Salu2,

Octavio

"e-lores" escribió en el mensaje
news:
> La verdad es que es muy útil.
>
> La generación de número aleatorios depende fuertemente de la semilla
(Seed)
> utilizada. A partir de ésta construye una función que va generando


números
> pseudoaleatorios que es lo que obtenemos. Si no ponéis ninguna se toma a
> partir de la hora del reloj.
>
> Podeis hacer una prueba si quereis:
>
> Random rnd1 = new Random();
> Random rnd2 = new Random();
> Random rnd3 = new Random();
> Random rnd4 = new Random();
> Random rnd5 = new Random();
>
> al hacer esto el ordenador toma la misma semilla (normalmente) y las
> secuencias de números que se generarán para cada objeto random serán las
> mismas.
>
> Un saludo.
> e-lores.
>
>
> "Octavio Hernandez" escribió en el mensaje
> news:
> > Alberto,
> >
> > Efectivamente, la versión Random() sin argumentos genera una secuencia


a
> > partir de una semilla nueva que depende del reloj.
> >
> > A priori no parece que tenga mucha utilidad la otra variante, pero
¿quién
> > sabe? a lo mejor alguien en algún momento necesita que se repita
> nuevamente
> > la misma secuencia que acaba de utilizar... Si solo existiera el
> constructor
> > sin parámetros, esto no se podría hacer.
> >
> > Salu2,
> >
> > Octavio
> >
> > "Alberto" escribió en el mensaje
> > news:
> > > Observo que el método Random de la clase del mismo nombre admite un
> > > parámetro que se llama Seed que es la inicialización de los números
> > > aleatorios. ¿tiene alguna utilidad? estoy observando que aunque no


se
le
> > > pase nada, funciona correctamente y la secuencia no se repite.
> > >
> > > Gracias
> > >
> > >
> >
> >
>
>
>


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida