C ++随机数生成器根本不能正确生成数字

时间:2012-06-22 10:14:10

标签: c++ random

这是我的功能:

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))
};

它不起作用,如果我说添加随机(5,10)它有时会显示15,5,4。我无法弄明白,因为所有指南都说“这是它的假设方式是“但它不起作用。我错过了什么?

这个方法是课程的一部分。

我已尝试将srand(time(NULL))置于:

  1. 完全没有
  2. 在构造函数中
  3. 方法
  4. 没有结果。

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

2 个答案:

答案 0 :(得分:7)

  1. 只打电话srand
  2. 使用return (rand() % (max-min+1)) + min; (+1表示将max纳入范围)
  3. rand()返回0到RAND_MAX之间的值,是一个正整数。

答案 1 :(得分:3)

  

man rand(3)

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

返回值 rand()和rand_r()函数返回0到RAND_MAX(包括)之间的值。 srand()函数不返回任何值。

来自man rand(3)