c++中-9到9的随机数
random number from -9 to 9 in C++
只是想知道,如果我有以下代码:
int randomNum = rand() % 18 + (-9);
会创建一个从-9到9的随机数吗?
不会的。你要找的是:
int randomNum = rand() % 19 + (-9);
在-9和+9之间有19个不同的整数(包括两者),但rand() % 18
只给出了18种可能。这就是为什么你需要使用rand() % 19
。
不要忘记新的c++ 11伪随机功能,如果你的编译器已经支持它,它可能是一个选项。
伪代码:
std::mt19937 gen(someSeed);
std::uniform_int_distribution<int> dis(-9, 9);
int myNumber = dis(gen)
您的代码返回介于(0-9和17-9)=(-9和8)之间的数字
供参考
rand() % N;
返回0到N-1之间的数字:)
正确的代码是
rand() % 19 + (-9);
你是对的,在-9和9(包括)之间有18个计数数。
但是计算机使用的是整数(Z集),其中包括0,这使得它有19个数字。
rand()除以RAND_MAX的最小比值是0,所以你需要减去9得到-9。
不推荐使用以下信息。它不再出现在手册中。我还建议使用现代c++来完成这项任务。
还有rand函数的手册引用:
"如果你想生成1到10之间的随机整数,你应该总是使用高阶位,如
j = 1 + (int) (10.0 * (rand() / (RAND_MAX + 1.0)));
和任何类似的
j = 1 + (rand() % 10);
(使用低阶位)。"
在你的例子中就是:
int n= -9+ int((2* 9+ 1)* 1.* rand()/ (RAND_MAX+ 1.));
任何时候你有疑问,你可以运行一个循环,用你的原始算法得到1亿个随机数,得到最低和最高的值,看看会发生什么
相关文章:
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- 整数不会重复超过随机数
- if数组上的随机数
- 在将数字随机生成为数组期间从内存输出随机数的数组
- 半随机数生成C++
- 程序在尝试猜测它选择的随机数时进入无限循环?
- 有没有办法在 c++ 中同时生成随机数?如果没有,是否有解决方法?
- 具有随机数的二维数组不会更改
- 随机数未达到限制
- 我想生成许多矩阵并用随机数填充它
- <random>在实践中应该实际使用哪个随机数引擎? std::mt19937?
- 制作具有平均值的随机数生成器
- 为什么 rand 不在我的代码中生成随机数?
- C++ 随机数生成器:尝试将结果作为向量获取,但通过制作 void 函数来执行此操作而出现错误
- 从给定种子生成相同的随机数序列C++
- 随机数生成函数说明
- C++ 尝试生成随机数时弹出警告帮助?
- 尝试在 c++ 中创建随机数生成器并收到错误
- 从给定的随机数组值生成随机数 Arduino程序C++
- 如何在个人计算机和群集 (c++) 上生成相同的随机数