我编写了一个C函数,它可以从范围为[rangeLow, rangeHigh](包括边界)的均匀分布中选择整数。这不是作业 - 我只是在进行一些嵌入式系统 tinkering 的时候使用它来玩乐。
在我的测试案例中,此代码似乎产生了适当的分布。然而,我并不完全自信这个实现是正确的。能否有人对其进行审核,并让我知道是否有任何错误?
//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()
附言:我搜索了其他类似的问题,但是很难过滤掉讨论随机整数而不是随机浮点数的小子集的问题。