我编写了一个 C 函数,我认为它从范围为 [rangeLow, rangeHigh]的均匀分布中选择整数,包括在内。这不是家庭作业——我只是在一些嵌入式系统中使用它来做一些有趣的事情。
在我的测试用例中,此代码似乎产生了适当的分布。不过,我并不完全相信实施是正确的。有人可以进行健全性检查并让我知道我是否在这里做错了什么?
//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我搜索了其他类似的问题。但是,很难过滤掉讨论随机整数而不是随机浮点数的一小部分问题。