Dan*_*nny 14 c++ random numbers
只是想知道,如果我有以下代码:
int randomNum = rand() % 18 + (-9);
Run Code Online (Sandbox Code Playgroud)
这会创建一个从-9到9的随机数吗?
NPE*_*NPE 30
不,它不会.您正在寻找:
int randomNum = rand() % 19 + (-9);
Run Code Online (Sandbox Code Playgroud)
在-9和+9之间有19个不同的整数(包括两者),但rand() % 18只提供18种可能性.这就是你需要使用的原因rand() % 19.
您的代码返回介于(0-9和17-9)=( - 9和8)之间的数字.
供您参考
rand() % N;
Run Code Online (Sandbox Code Playgroud)
返回0到N-1之间的数字:)
正确的代码是
rand() % 19 + (-9);
Run Code Online (Sandbox Code Playgroud)
不要忘记新的C++ 11伪随机功能,如果你的编译器已经支持它,它可以是一个选项.
伪代码:
std::mt19937 gen(someSeed);
std::uniform_int_distribution<int> dis(-9, 9);
int myNumber = dis(gen)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
38803 次 |
| 最近记录: |