Casuale dell'RNG avvolto

3

Ci sono un sacco di domande sulla generazione di numeri casuali, ma non ho trovato nulla che corrispondesse esattamente alla mia domanda. Mi scuso se ne ho perso uno.

La maggior parte dei generatori di numeri casuali nel software tendono ad avere una distribuzione piatta: nell'intervallo dato, è probabile che un numero qualsiasi venga dopo come un altro (più o meno). Questa è ovviamente l'intenzione, perché qualsiasi cosa diversa da una distribuzione piatta non è del tutto casuale perché alcuni numeri sono più probabili di altri. Tuttavia, ci sono momenti in cui una distribuzione piatta non è auspicabile. Ad esempio, quando si costruisce un gioco, è spesso necessario modellare scenari reali, molti dei quali hanno una distribuzione normale (a campana).

Se un PRNG "buono" (come un RNG esistente dalla libreria principale di un linguaggio di programmazione popolare) viene inserito in un'equazione semplice, ad esempio l'equazione per una curva a campana o un'onda sinusoidale o un'altra distribuzione, come lontano possiamo supporre che il PRNG risultante sia anche "buono"? La maggior parte dei test per PRNG verifica se il sistema è puramente casuale, quindi non funzionerà su questo sistema. È solo questione di contare gli output per un lungo periodo di tempo e vedere come si adattano alla distribuzione desiderata, oppure esiste un modo più semplice (ad esempio analitico o algebrico) per verificarlo?

Qualsiasi aiuto sarebbe apprezzato.

    
posta anaximander 28.02.2013 - 09:59
fonte

2 risposte

3

Devi prendere un mucchio di numeri e vedere se si adattano alla curva desiderata. Hai fatto l'algebra quando hai creato l'equazione di trasformazione della curva flat- & gt ;. Fare più algebra non ti aiuterà a dimostrare che sai già come fare l'algebra. Hai bisogno di un altro modo per dimostrare che hai creato correttamente l'equazione e che l'hai implementata correttamente.

Il modo più semplice per controllarlo è afferrare un mucchio di numeri e tracciarli.

    
risposta data 28.02.2013 - 17:56
fonte
2

Se la curva a campana viene implementata correttamente (ad es. non distorce la natura del PRNG), allora la curva a campana generata PRNG sarà valida quanto il PRNG da cui è stata generata.

Inoltre, a causa della natura della funzione della curva a campana, la traduzione dovrebbe essere bidirezionale (dovresti essere in grado di trasformare un PRNG di curva a campana in un PRNG piatto, assumendo valori reali). Se non è bidirezionale, hai fatto qualcosa di sbagliato.

Potresti voler cross-postare questo a cs teorico. Potresti ricevere una risposta più interessante.

    
risposta data 28.02.2013 - 17:57
fonte

Leggi altre domande sui tag