これはC#よりも数学に関連している可能性がありますが、C#ソリューションが必要なので、ここに配置します。
私の質問は、乱数ジェネレーターの確率についてです。より具体的には、可能な各値が等しい確率で返されるかどうかです。
最初の整数と最後の整数の間の数値を返すRandom.Next(int、int)メソッドがあることを知っています(最後は排他的です)。
Random.Next()
[オーバーロードなし]は、0からInt32.MaxValue(2147483647)-1の間の値、つまり2147483646を返します。
1〜10の値が必要な場合は、これを呼び出すことができますが、Random.Next(1, 11)
1〜10のすべての値が発生する確率は同じですか?
たとえば、範囲は10であるため、2147483646は10で完全に割り切れないため、値1〜6の確率はわずかに高くなります(理由2147483646 % 10 = 6
)。もちろん、これは、Random.Next()
[オーバーロードなし]内のすべての値が0から2147483646までの値を等しい確率で返すことを前提としています。
範囲内のすべての数値が同じ確率で発生することをどのように保証しますか?一部の人が他の人よりも高い能力を持っていることが不公平である宝くじタイプのシステムについて考えてみましょう。これにRNGに組み込まれたC#を使用するのではなく、単なる例として使用しました。