这是我的功能:
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))置于:
没有结果。
rand()不应该返回介于0和1之间的值吗?我没有。
答案 0 :(得分:7)
srand
return (rand() % (max-min+1)) + min
;
(+1表示将max
纳入范围)rand()
返回0到RAND_MAX
之间的值,是一个正整数。答案 1 :(得分:3)
man rand(3)
函数签名是int rand(void);
所以它已经不能返回介于0和1之间的值,因为它是一个整数。
返回值 rand()和rand_r()函数返回0到RAND_MAX(包括)之间的值。 srand()函数不返回任何值。