¿Cuál es el código fuente de randomize()?
seed = i;
donde i puede ser la hora actual del sistema o el reloj de la CPU que cambia rápidamente, siempre que desee que esté bien. it Se puede usar como i
la semilla es una semilla aleatoria Después de sembrar diferentes semillas, teóricamente se pueden producir diferentes frutos (secuencias de números aleatorios)
Y rand () (C. idioma El número aleatorio en ) en realidad no es complicado, después de todo, es un número pseudoaleatorio.
Utiliza un método llamado homología lineal para generar números aleatorios.
En realidad es una fórmula tan recursiva
Xn+1 = (AXn + B) mod M
mod significa el resto (módulo), lo que significa que el segundo número aleatorio se genera en función del primer número aleatorio, por lo que no es difícil entender por qué el primer número aleatorio se llama semilla.
M es una indicación importante del período (T = M - 1). Cuanto mayor sea M, más largo será el período, por lo que si no desea que los números aleatorios se repitan con frecuencia, configúrelo más grande.
A y B son constantes, M es un número primo y A es la raíz primitiva de M
Si no sabes cuáles son estos números, puedo darte un conjunto de números que he probado
M = 32719
A = 2
B = 17
El resultado está bien. En definitiva, este es un número pseudoaleatorio, por lo que no se puede pedir demasiado.
h>
//Variable global
int seed = 0;
//Semilla de inicialización
void Srand ( int inSeed )
{
semilla = inSeed
}
// Aritmética aleatoria
int Aleatorio ( void )
{
const unsigned int m = 32719;
const int a = 2;
const int b = 17;
semilla = (semilla*a + b)%m;
devolver semilla;
}
// Reloj de CPU
int Reloj ( void )
{
_asm
{
RDTSC
}
}
int main ( void )
{
int inSeed
int randNumber;
int count0 = 0, count1 = 0;
printf ( "Escriba la semilla inicial\n0 para el valor predeterminado\n" );
scanf ( "%d", & .inSeed );
if ( inSeed != 0 )
Srand ( inSeed );
else
Srand ( Reloj () );
for ( int i = 0; i < 1000; i++ )
{
randNumber = Aleatorio () % 2
printf ( "%d\n", randNumber );
if ( randNumber == 0 )
count+;
else
count1++;
}
printf ( "salida 0 :
printf ( "salida 0 : %d\n", count0 );
printf ( "salida 0: %d\n", recuento0 );
printf ( "salida 1 : %d\n", recuento1 );
sistema ( "pausa");
return 0;
}
Si no entiendes, usa Baidu HI me