Sta generando un grande numero casuale più unico rispetto alla generazione di ogni cifra in quel numero?

1

Sto utilizzando un PRNG (implementazione predefinita di rand() di PHP) per generare numeri univoci a 16 cifre. Ha senso generare cifre uno alla volta o il numero in una sola volta?

Sto usando PHP.

    
posta buskila 01.12.2014 - 13:11
fonte

2 risposte

1

In linea di principio ogni generatore aritmetico di numeri pseudo-casuali (come PHP) ha un periodo finito dopo il quale si ripeterà la stessa sequenza di numeri. E la maggior parte dei generatori genererà un numero fisso minimo di bit (spesso 32) per te internamente ad ogni passaggio, indipendentemente da quanto grande o piccola sia la gamma di risultati che hai richiesto.

Quindi generare ogni cifra separatamente mangerà la sequenza del tuo generatore più rapidamente e quindi renderà la sequenza risultante di numeri completi meno globali "casuali".

In pratica la differenza più rilevante è probabilmente che generare ogni cifra separatamente è molto più lavoro.

Entrambi questi effetti, tuttavia, puntano nella stessa direzione: Dovresti generare il tuo intero numero casuale in una sola volta.

    
risposta data 02.12.2014 - 16:56
fonte
0

Con un PRNG con uguale probabilità per "cifre decimali singole" e "numeri decimali a 16 cifre", no, dovrebbero essere uguali.

Tuttavia, è improbabile che il PRNG abbia probabilità perfette per i numeri di base 10, quindi "possibilmente". Dipenderà da quanto questo influenza la probabilità di una cifra specifica.

Ricorda che un numero di 16 cifre ha un massimo di 54 bit, quindi questo potrebbe influenzare la tua decisione se devi generare il tuo numero in pezzi o meno.

    
risposta data 01.12.2014 - 13:30
fonte

Leggi altre domande sui tag