0

在这篇文章的最后一个示例(http://www.daniweb.com/software-development/cpp/threads/1769/c-random-numbers)中,作者声称这是一种更好的生成随机数的方法。但是,我读了这一行,仍然对试图做什么感到困惑。

random_integer = lowest+int(range*rand()/(RAND_MAX + 1.0));

我测试了这段代码,但它每次都会产生“1”的值。

我希望有人可以提供澄清。

4

1 回答 1

1

假设您要在 range 中生成随机整数[a, b)。这可以通过在范围内生成随机整数[0, b - a)并添加a

random_integer = a + rand(0, b - a)

我们可以[0, RAND_MAX]使用普通的生成范围内的随机整数rand()。现在,我们需要缩放这个区间以适应[0, r), r = b - a。因为RAND_MAX是 返回的最大值rand()rand() / (MAX_RAND + 1.0)所以在 中[0, 1)。所以,r * rand() / (MAX_RAND + 1.0)[0, r).

于 2013-09-03T08:04:41.000 回答