JSの中のMathは使わないでrandom()メソッド生成乱数
ネット上でよく見られるJS乱数生成アルゴリズムは、なぜ9301、49297、233280の3つの数字を基数としているのか.
この乱数生成アルゴリズムを何度も見たが、一見Mathを使っていた.random()でいいこと.なぜ彼が930149297233280という3つの数字を使うのか分からない.その中には道理がありますか.それとも勝手に選んだ3つの数だけですか?しかし、この組み合わせは広く伝わっているようだ.多くの小さなサイトのソースコードで見たことがあります.
原理はここを参照http://www.zhihu.com/question/22818104
Googleはこの3つの数字を見て、いくつかの説も人が合理的な解釈を見つけていない.
この乱数生成アルゴリズムを何度も見たが、一見Mathを使っていた.random()でいいこと.なぜ彼が930149297233280という3つの数字を使うのか分からない.その中には道理がありますか.それとも勝手に選んだ3つの数だけですか?しかし、この組み合わせは広く伝わっているようだ.多くの小さなサイトのソースコードで見たことがあります.
var
rand = (
function
(){
var
today =
new
Date();
var
seed = today.getTime();
function
rnd(){
seed = ( seed * 9301 + 49297 ) % 233280;
return
seed / ( 233280.0 );
};
return
function
rand(number){
return
Math.ceil(rnd(seed) * number);
};
})();
console.log(rand(100))
console.log(rand(100))
console.log(rand(100))
原理はここを参照http://www.zhihu.com/question/22818104
Googleはこの3つの数字を見て、いくつかの説も人が合理的な解釈を見つけていない.