乱数の履歴が将来の結果を予測するのに役立つかどうかをテストする際に、生成された数の平均と正しい推測の数との間に、予期しない強い相関があることがわかりました。なぜ乱数と正しい推測値との間に強い相関関係がありますか?
このテストでは、コイン(頭= 0、尾= 1)の反転をシミュレートし、前の試行が頭の方に偏っていれば尻尾を推測し、逆も同様です。
なぜ生成された数字の合計が、次のLinqPadプログラムの正しい推測数とほぼ等しいのですか?
void Main()
{
var rnd = new Random();
var attempts = 10000000;
var correctGuesses = 0;
long sum = 0;
decimal avg = 0.5m;
for (int i = 0; i < attempts; i++)
{
var guess = avg < 0.5m ? 1 : 0;
var result = rnd.Next(0, 2);
if (guess == result)
{
correctGuesses += 1;
}
sum += result;
avg = (decimal)sum/(decimal)attempts;
}
attempts.Dump("Attempts");
correctGuesses.Dump("Correct Guesses");
avg = (decimal)sum/(decimal)attempts;
avg.Dump("Random Number Average");
}
は、コード内のエラーをしたことがありますか?これは自然な関係ですか?私は試行回数を増やすと平均が0.5に収束すると予想していました。これはかなり均等に分布しています。これをへの10億コールでテストしましたが、生成された数字の合計が正しい推測の数に相関するとは思わなかった。
あなたのコードをあまり詳しく読まないと、 'Random'クラスが擬似乱数ジェネレーターであることが分かりますか?のように、あまりランダムではない?実際の乱数が必要な場合は、 'Random'クラスよりはるかに強く(遅く)する必要があります。 – Jamiec
このように考えてください。あなたはコインを10回ひっくり返し、10回すべてが頭に着地した。 11回目にコインを裏返すと、それは再びヘッズに上陸する確率はいくらですか? – user1666620
@Jamiec:はい、私はそれを認識しています。それは私の元のテストに影響を与えるかもしれませんが、まだ相関を説明していません:-) –