srand() 和 rand() 倾向于产生负数
srand() and rand() favors producing negative numbers
我写这个函数是为了在一定范围内产生随机数。我注意到,当我包括负范围时,它似乎会产生更多的负数。例如 -5 到 5
我假设这不是随机的。此代码有问题吗?
int random_number_generator(int lowest, int highest)
{
srand((unsigned)time(0));
int random_integer;
random_integer = lowest+(rand()%highest);
cout << random_integer << endl;
}
所需的范围将是最高-最低,因此您需要像这样编写表达式:
random_integer = lowest+(rand()%(highest-lowest));
您可以使用以下代码:
int srandInit = 0;
float Random(float min, float max)
{
if (srandInit == 0)
{
srand ( (unsigned)time(NULL) );
srandInit = 1;
}
return ((max - min) * ((float)rand() / (float)RAND_MAX)) + min;
}
只需从结果float
static_cast
到int
下一个表达式的结果是 [ 最低 .. 最高 ] 区间的 rand 数
random_integer = lowest + ( rand( ) % (highest-lowest + 1) );
相关文章:
- 为什么我不能将 rand() 与数组的大小一起使用?
- 为什么新的随机库比std::rand()更好
- 为什么rand()的使用被认为是不好的
- 使用 rand() 和 srand() 有问题
- C++ 更深入地了解 rand() 和 srand() 内部
- rand() 和 srand() 给出了奇怪的相似结果.来自 rand() 的返回非常相似
- 如何在使用随机生成器(srand,rand)时检查数字是否不同
- 在具有相同种子的同一程序中对srand()的第二次调用不会为连续的rand()生成相同的值
- 结合rand()和srand()以提高性能
- rand() 即使与 srand( time(NULL) 也不起作用
- rand()在通过函数调用时生成相同的随机数集(即使在使用srand(time(NULL)进行种子设定之后)
- 为什么在使用rand生成随机数之前需要调用srand
- c++rand()和来自boost的RNG生成相同的数字(在发布模式中),即使srand(0)也是如此
- rand() / srand() 一直给我零
- Rand() 是相同的数字生成器,即使我调用了 srand(time(NULL))
- rand() and srand() function opengl visual cpp
- 第一个 rand() 在 srand(time(0) 之后生成相同的值
- srand() 和 rand() 倾向于产生负数
- 'rand()' 的有用性 - 或者谁应该称呼 'srand()'
- rand() and srand() in C++