我写了一个接受整数的函数。如果用户输入例如 -5,它不会崩溃,但它会将其转换为正 =-(
int getRandoms(int size, int upper, int lower)
{
int randInt = 0;
randInt = 1 + rand() % (upper -lower + 1);
return randInt;
}
Run Code Online (Sandbox Code Playgroud)
为了构建随机负整数,我应该在函数中更改什么?用户输入范围。
对此有两个答案,如果您使用的是C++11,那么您应该使用uniform_int_distribution,出于多种原因,例如为什么人们说使用随机数生成器时存在模偏差是可取的?是一个例子,rand() 被认为有害的表示给出了一组更完整的原因。这是一个从 生成随机整数的示例-5 to 5:
#include <iostream>
#include <random>
int main()
{
std::random_device rd;
std::mt19937 e2(rd());
std::uniform_int_distribution<int> dist(-5, 5);
for (int n = 0; n < 10; ++n) {
std::cout << dist(e2) << ", " ;
}
std::cout << std::endl ;
}
Run Code Online (Sandbox Code Playgroud)
如果C++11不是一个选项,那么C 常见问题中描述的方法如何获得特定范围内的随机整数?是要走的路。使用该方法,您将执行以下操作以从 生成随机整数[M, N]:
M + rand() / (RAND_MAX / (N - M + 1) + 1)
Run Code Online (Sandbox Code Playgroud)