随机数未达到限制
Random Numbers aren't reaching limit
我正在为 110,000 到 320,000 之间的数字创建一个随机数生成器。当我 运行 它时,没有数字超过 150,000。有什么方法可以确保生成超过 150,000 的数字吗?即使生成数千个数字也行不通。我知道我有很多东西包括在内。这是代码:
#include <stdlib.h>
#include <iostream>
#include <Windows.h>
#include <cstdlib>
#include <ctime>
#include <iostream>
#include <sstream>
#include <conio.h>
#include <ctime>
#include <random>
#include <cstdlib>
#include <ctime>
#include <iostream>
using namespace std;
int main() {
srand((unsigned) time(0));
int randomNumber;
for (int index = 0; index < 500; index++) {
randomNumber = (rand() % 320000) + 110000;
cout << randomNumber << endl;
}
}
正如约翰所说。您可以使用更新的更易于操作的随机数生成器。
调整来自 C++ Reference about uniform_int_distribution
的代码
对于您的用例很简单:
#include <iostream>
#include <random>
int main(void) {
std::random_device rd; // Will be used to obtain a seed for the random number engine
std::mt19937 gen(rd()); // Standard mersenne_twister_engine seeded with rd()
std::uniform_int_distribution<> distrib(110000, 320000);
for (int n=0; n<10; ++n)
// Use `distrib` to transform the random unsigned int generated by
// gen into an int in [110000, 320000]
std::cout << distrib(gen) << ' ';
std::cout << '\n';
}
我正在为 110,000 到 320,000 之间的数字创建一个随机数生成器。当我 运行 它时,没有数字超过 150,000。有什么方法可以确保生成超过 150,000 的数字吗?即使生成数千个数字也行不通。我知道我有很多东西包括在内。这是代码:
#include <stdlib.h>
#include <iostream>
#include <Windows.h>
#include <cstdlib>
#include <ctime>
#include <iostream>
#include <sstream>
#include <conio.h>
#include <ctime>
#include <random>
#include <cstdlib>
#include <ctime>
#include <iostream>
using namespace std;
int main() {
srand((unsigned) time(0));
int randomNumber;
for (int index = 0; index < 500; index++) {
randomNumber = (rand() % 320000) + 110000;
cout << randomNumber << endl;
}
}
正如约翰所说。您可以使用更新的更易于操作的随机数生成器。
调整来自 C++ Reference about uniform_int_distribution
的代码
对于您的用例很简单:
#include <iostream>
#include <random>
int main(void) {
std::random_device rd; // Will be used to obtain a seed for the random number engine
std::mt19937 gen(rd()); // Standard mersenne_twister_engine seeded with rd()
std::uniform_int_distribution<> distrib(110000, 320000);
for (int n=0; n<10; ++n)
// Use `distrib` to transform the random unsigned int generated by
// gen into an int in [110000, 320000]
std::cout << distrib(gen) << ' ';
std::cout << '\n';
}