为RANSAC采样生成两个随机数

时间:2010-11-17 10:12:43

标签: c random

我已经研究了如何使用rand()%n(其中n是样本总数)生成两个随机整数,但它们似乎通常有偏差。

是否有更好的(最好是更简单的)方法来生成0到n之间的随机数(样本数)?

从包含数据点列表的文件中读取

n。目标是使用RANSAC对数据进行线性拟合。

1 个答案:

答案 0 :(得分:1)

rand() % n明显小于n时,

RAND_MAX仅使用随机数的低位。最好使用所有比特,例如除以RAND_MAX得到一个介于0.0和1.0之间的(浮点)数,再乘以 n 并转换回整数。

对于某些用途,rand()的实现也可能不够好。在这种情况下,使用另一个随机数生成器(例如Mersenne Twister)。