-3

这是我的功能:

Random(int min, int max)
{
    srand(time(NULL));
    return (rand() % (max-min)) + 1;
    // or
    return (rand() % (max+min)) + 1;
    // or
    return (rand() % (max-min))
    // or
    return (rand() % (max+min))
};

而且它不起作用,如果我说 add Random(5, 10) 它有时会显示 15, 5, 4。我无法弄清楚,因为所有指南都说“这就是它应该是的方式”但是它不起作用。我错过了什么?

这个方法是类的一部分。

我试过 srand(time(NULL)) 放在:

  1. 一点也不
  2. 在构造函数中
  3. 在方法

没有结果。

rand() 不应该返回 0 到 1 之间的值吗?我的没有。

4

2 回答 2

7
  1. 只调用srand一次
  2. 使用return (rand() % (max-min+1)) + min;(+1 用于包含max在范围内)
  3. rand()返回一个介于 0 和 之间的值,RAND_MAX并且是一个正整数。
于 2012-06-22T10:20:11.017 回答
3

曼兰德(3)

函数签名是int rand(void);所以它已经不能返回 0 和 1 之间的值,因为它是一个整数。

返回值: rand() 和 rand_r() 函数返回一个介于 0 和 RAND_MAX(含)之间的值。srand() 函数不返回任何值。

来自曼兰德(3)

于 2012-06-22T10:20:59.700 回答