dwyl / dwyl/learn-javascript

Random Number Generator "Randomness" Check?

Ouverte
#21 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
enhancement question
Langage dominant
HTML
Étoiles
65
Forks
15
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

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...

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Piste de recherche

Commencez par localiser la fonction get_random_int dans le dépôt et exécutez la boucle JavaScript présentée dans l’issue avec la plage et le nombre de tests indiqués. L’issue n’identifie ni fichier, ni emplacement de test, ni modification demandée du dépôt ; précisez s’il faut ajouter ou documenter la vérification de la distribution avant de définir ce que signifie le fait que le travail soit terminé.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
javascript
Domaine
testing
Type d'issue
Fonctionnalité
Difficulté
3/5
Temps estimé
1-2 jours
Activité
À l'abandon
Clarté
À clarifier
Accessibilité débutants
25/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.