Bonjour,
Voila le problème, à partir d'un générateur de nombre aléatoire qui produit un réel compris entre 0 et 1 (1 non compris, cad [0,1) ) je voudrais pouvoir générer un nombre compris entre 0 et x (x entier > 1).
Or en lisant vite fait un article sur wikipédia (http://en.wikipedia.org/wiki/Fisher-Yates_shuffle dans la section modulo bias), je lis que multiplier le nombre compris entre 0 et 1 par x et garder la partie entière provoque un biais. En anglais :En gros ca dit que le nombre généré a une précision finie et qu'entre le range [0,1) il n'y a qu'un nombre fini de réel représenté.Et que donc si on divise l' intervalle [0,1) en un nombre fini de segment (soit x ce nombre), alors il y a un probleme si x ne divise pas le nombre de réels effectivement représenté dans [0,1), certains intevalles contiendront en effet plus de nombres que d'autres. Bref si j'ai bien compris certains intervalles seront plus probables que d'autres, et donc au final certaines valeurs seront générées plus que d'autres d'où le biais :/The problem here is that random floating-point numbers, however carefully generated, always have only finite precision. This means that there are only a finite number of possible floating point values in any given range, and if the range is divided into a number of segments that doesn't divide this number evenly, some segments will end up with more possible values than others. While the resulting bias will not show the same systematic downward trend as in the previous case, it will still be there.
J'aimerais donc connaître un moyen afin de générer un nombre entier entre 0 et X sans biais à partir d'un nombre aléatoire compris entre 0 compris et 1 non-compris. Le générateur utilisé est le mersenne twister.
En fait si y'en a qui connaîssent bien le sujet, toutes les infos sont bienvenues
Partager