在C++中生成六位数字
问题描述:
我有问题,应该生成六位数字的函数。这似乎是程序生成的数字,但他们总是以1 Six digit numbers在C++中生成六位数字
开始和多数民众,使问题的一部分:
void generateNumbers(int &len, int arr[]) {
srand(time(0));
cout << "How many numbers to generate: ";
cin >> len;
if (len <= 0 || len > 100) {
cout << "\n Chose number between 1 - 100\n";
generateNumbers(len, arr);
} else {
cout << "\n\nThe numbers: \n";
for (int i = 0; i < len; i++) {
arr[i] = (rand() % 999999) + 100000;
cout << endl << arr[i];
}
}
}
我pobably知道兰特()%999999 + 100000是错误的但我尝试了不同的方式,并没有一个工作。提前致谢!
答
等式rand() % 900000 + 100000
会给你正确的值,但是rand
is considered harmful。
相反,我建议你使用vector
和mt19937
。既然你已抓获你在len
寻找数,你可以这样做:
vector<int> arr(len);
generate(begin(arr), end(arr), [g = std::mt19937{std::random_device{}()}]() mutable { return g() % 900000 + 100000; });
你只需要因'兰特()%90万+ 100000' –
为000000一个六位数字?或者是第一个六位数字100000?在后一种情况下,您需要一个介于0和899999之间的随机数并将偏移量添加到该数字中。 –
@MartinBonner由于它包含的事实,它错误的是'900000' –