c++ - rango - ¿Qué es una semilla en términos de generar un número aleatorio?
numeros aleatorios google (2)
Entonces, pongámoslo de esta manera:
Si usted y su amigo establecen que la semilla equivale al mismo número, para entonces usted y su amigo obtendrán los mismos números aleatorios. Entonces, si todos nosotros escribimos este sencillo programa:
#include<iostream>
using namespace std;
void main () {
srand(0);
for (int i=0; i<3; i++){
int x = rand()%11; //range between 0 and 10
cout<<x<<endl;
}
}
Todos obtendremos los mismos números aleatorios que son (5, 8, 8).
Y si desea obtener un número diferente cada vez, puede usar srand (time ())
Esta pregunta ya tiene una respuesta aquí:
- ¿Qué significa ''siembra''? 4 respuestas
¿Qué es una semilla en términos de generar un número aleatorio?
Necesito generar cientos a miles de números aleatorios, he leído mucho sobre el uso de una "semilla". ¿Qué es una semilla? ¿Es una semilla de donde comienzan los números aleatorios? Por ejemplo, si configuro mi semilla en 5, ¿generará números de 5 a cualquiera que sea mi límite? Entonces nunca me dará 3, por ejemplo.
Estoy usando C ++, así que si proporciona algún ejemplo, sería bueno si estuviera en C ++.
¡Gracias!
Lo que normalmente se llama secuencia de números aleatorios en realidad es una secuencia numérica "pseudoaleatoria" porque los valores se calculan usando un algoritmo determinista y la probabilidad no desempeña ningún papel real.
La "semilla" es un punto de partida para la secuencia y la garantía es que si comienzas desde la misma semilla obtendrás la misma secuencia de números. Esto es muy útil, por ejemplo, para la depuración (cuando busca un error en un programa, necesita poder reproducir el problema y estudiarlo, un programa no determinista sería mucho más difícil de depurar porque cada ejecución sería diferente) .
Si solo necesita una secuencia aleatoria de números y no necesita reproducirla, simplemente use la hora actual como semilla ... por ejemplo con:
srand(time(NULL));