範囲[rangeLow、rangeHigh]の一様分布から整数を選択すると思われるC関数を作成しました。これは宿題ではありません。私はこれを、楽しみのためにやっていることをいじくり回しているいくつかの組み込みシステムで使用しています。
私のテストケースでは、このコードは適切な分布を生成するように見えます。ただし、実装が正しいとは完全には確信していません。誰かが健全性チェックを行い、ここで何か間違ったことをしたかどうか教えてもらえますか?
//uniform_distribution returns an INTEGER in [rangeLow, rangeHigh], inclusive.
int uniform_distribution(int rangeLow, int rangeHigh)
{
int myRand = (int)rand();
int range = rangeHigh - rangeLow + 1; //+1 makes it [rangeLow, rangeHigh], inclusive.
int myRand_scaled = (myRand % range) + rangeLow;
return myRand_scaled;
}
//note: make sure rand() was already initialized using srand()
PS私はこのような他の質問を検索しました。ただし、ランダムな浮動小数点数ではなく、ランダムな整数について説明している質問の小さなサブセットを除外することは困難でした。