17-06-2018, 06:40 PM
Je reposte vu que j'ai posté en même temps que Niahoo.
Ma solution : créer un nombre en binaire sous forme d'une chaîne de 3 bits (0 ou 1) et la convertir en base décimal.
Pour produire un bit, je tire un nombre entre 1 et 4 (pour ça je fais un rand5 et si c'est 0 je recommence) et je prends son modulo 2.
Je concatène ces 3 bits pour faire un nombre en binaire entre 000 et 111, si c'est 111 (7 en décimal) je recommence (oui ma solution est un peu bruteforce :p).
J'ai pas regardé la vidéo mais j'ai plutôt mis 15 minutes.
Ma solution : créer un nombre en binaire sous forme d'une chaîne de 3 bits (0 ou 1) et la convertir en base décimal.
Pour produire un bit, je tire un nombre entre 1 et 4 (pour ça je fais un rand5 et si c'est 0 je recommence) et je prends son modulo 2.
Je concatène ces 3 bits pour faire un nombre en binaire entre 000 et 111, si c'est 111 (7 en décimal) je recommence (oui ma solution est un peu bruteforce :p).
Code :
window.rand7Factory = function(rand5){
function randomBit() {
const number = rand5();
if (number === 0) return randomBit();
return number % 2;
}
function random7() {
const bits = [ randomBit(), randomBit(), randomBit() ].join("");
const number = parseInt(bits, 2);
if (number === 7) return random7();
return number;
}
return random7;
}
J'ai pas regardé la vidéo mais j'ai plutôt mis 15 minutes.