質問はトピックから外れているかもしれませんが、これは素晴らしく単純な乱数関数ではないのではないかと思っていました. 0 から までの乱数を与えることになっています$max
:
function randomNumber($max){
((int)(1000000000000 / microtime())) % ($max+1);
}
ここで明らかな何かが欠けていなければ、これはうまくいくはずですよね?しかし、次の質問は次のとおりです。ここで作成された数字は本当にランダムですか? 1,000,000 個のサイコロをシミュレートすると、次のような結果が得られます。
Array
(
[1] => 166520
[2] => 166619
[3] => 166522
[4] => 167001
[5] => 166512
[6] => 166826
)
私がこの質問をしている理由は次のとおりです。真の乱数を作成することはできないと読んだので、考え始めたところ、この関数はまったく複雑になることなく、かなりランダムな結果をもたらすようです。ここで何か不足していますか?