dwyl / dwyl/learn-javascript

Random Number Generator "Randomness" Check?

Aperta
#21 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub
enhancement question
Lingua principale
HTML
Stelle
65
Fork
15
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

Given the following "Random Integer between range X and Y" function:

``` js
/**
* Returns a random integer between min (inclusive) and max (inclusive)
* Using Math.round() will give you a non-uniform distribution!
* from: http://stackoverflow.com/a/1527820/1148249
*/
function get_random_int(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
```

We can run the following test to confirm the randomness:

``` js
var i = 0; // counter for looping.
var results = {}; // store the results of running get_random_int
var min = 0;
var max = 9;
for(i = min; i <= max; i++) {
results[i] = 0; // initialize results to zero;
}
i = 0; // reset/reuse i counter.
var test_count = 10000000;
while(i < test_count) {
var r = get_random_int(min, max);
results[r]++; // increment the count for a given random number
i++;
}
Object.keys(results).forEach(function(k) {
results[k] = results[k].toString() + ' > ' + (results[k] / test_count * 100).toFixed(3) + ' %';
});
console.log(JSON.stringify(results, null, 2));
```

Which outputs:

``` js
{
"0": "1000900 > 10.009 %",
"1": "999727 > 9.997 %",
"2": "999742 > 9.997 %",
"3": "999268 > 9.993 %",
"4": "1000650 > 10.007 %",
"5": "998621 > 9.986 %",
"6": "1000241 > 10.002 %",
"7": "1000716 > 10.007 %",
"8": "1000151 > 10.002 %",
"9": "999984 > 10.000 %"
}
```

Which is a pretty decent distribution...

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Direzione di ricerca

Inizia individuando la funzione get_random_int nel repository ed esegui il ciclo JavaScript mostrato nell’issue con l’intervallo e il numero di test indicati. L’issue non identifica alcun file, alcuna posizione del test né alcuna modifica richiesta al repository; chiarisci se il controllo della distribuzione debba essere aggiunto o documentato prima di definire cosa significhi considerare completato il lavoro.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
javascript
Ambito
testing
Tipo di issue
Funzionalità
Difficoltà
3/5
Tempo stimato
1-2 giorni
Stato di attività
Ferma
Chiarezza
Da chiarire
Idoneità per principianti
25/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.