srand(time(NULL));
for (int o = 0; o < 8; o++){
x = rand() % 126 + 33;
keysInNumbers[o] = x;
cout << "Randomly generated number: " << keysInNumbers[o] << endl;
};
这应该产生33到126之间的随机数,但由于某种原因,有一些数字高于126但从不低于33.我无法弄清楚为什么会这样。
答案 0 :(得分:2)
您的号码将达到(不包括) 126 + 33 ,根据我的计算结果为159。
这是基本的逻辑,真的。 rand() % 126
将进入(不包括)126 ...然后你添加33!
我猜你的意思是x = (rand() % (126-33)) + 33
。
此外,你应该:
答案 1 :(得分:0)
您可以使用
轻松生成随机均匀分布int A = 33;
int B = 126;
auto myrand = std::bind(std::uniform_int_distribution<>(A,B), std::mt19937(std::random_device()()));
for (int o = 0; o < 8; o++){
x = myrand();
keysInNumbers[o] = x;
cout << "Randomly generated number: " << keysInNumbers[o] << endl;
};
这将使用系统上可用的随机源来播种。