Red de conocimiento informático - Problemas con los teléfonos móviles - ¿Cuál es el código fuente de randomize()?

¿Cuál es el código fuente de randomize()?

Conozco números aleatorios en C. Se supone que Randomize inicializa una función aleatoria, ¿verdad? El código fuente puede ser muy simple

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