我已经研究了如何使用rand()%n(其中n是样本总数)生成两个随机整数,但它们似乎通常有偏差。
是否有更好的(最好是更简单的)方法来生成0到n之间的随机数(样本数)?
从包含数据点列表的文件中读取n。目标是使用RANSAC对数据进行线性拟合。
答案 0 :(得分:1)
rand() % n
明显小于n
时, RAND_MAX
仅使用随机数的低位。最好使用所有比特,例如除以RAND_MAX
得到一个介于0.0和1.0之间的(浮点)数,再乘以 n 并转换回整数。
对于某些用途,rand()
的实现也可能不够好。在这种情况下,使用另一个随机数生成器(例如Mersenne Twister)。