[0, n)で乱数を選択する一般的な方法の 1 つは、rand()
モジュロn :の結果を取得することですrand() % n
。ただし、利用可能な実装によって返される結果が完全に均一であっても、 がnで均等に除算されない場合、結果の[0, n)数値rand()
の均一性に問題があるのではないでしょうか? たとえば、2 でnが 2 だとします。3 つの可能な出力: 0、1、および 2 のうち、モジュロnを使用すると、それぞれ 0、1、および 0 が得られます。したがって、出力はまったく均一ではありません。RAND_MAX + 1
RAND_MAX
rand()
これは実際には実際の問題ですか?[0, n)で乱数を選択しrand()
、できれば浮動小数点演算を使用せずに、出力から一様に導出するより良い方法は何ですか?