[英]How to limit the numbers generated by rand function in C++
我想要5個不同的隨機數,但生成的位數相同。
我有以下代碼:
int main()
{
srand(time(0));
unsigned int num1 = rand();
cout << "random number 1 = " << num1 << endl;
unsigned int num2 = rand();
cout << "random number 2 = " << num2 << endl;
unsigned int num3 = rand();
cout << "random number 3 = " << num3 << endl;
unsigned int num4 = rand();
cout << "random number 4 = " << num4 << endl;
unsigned int num5 = rand();
cout << "random number 5 = " << num5 << endl;
}
輸出為:
random number 1 = 278203697
random number 2 = 2102275865
random number 3 = 1018298572
random number 4 = 1658370388
random number 5 = 429634923
同時,我想要的輸出是它為所有數字生成相同數量的數字。 例如:
random number 1 = 278203697
random number 2 = 210227586
random number 3 = 101829857
random number 4 = 165837038
random number 5 = 429634923
如何使其像我想要的輸出?
謝謝,謝謝您的幫助
如果要讓所有數字都包含相同的數字,則必須創建大量隨機數。 或使用C ++ 11中引入的一些新功能 ,例如std::uniform_int_distribution
類:
std::random_device rd;
std::mt19937 gen(rd());
std::uniform_int_distribution<> dis(100000000, 999999999);
for (int n = 1; n <= 5; ++n)
std::cout << "random number " << n << " = " << dis(gen) << '\n';
您也可以只設置輸出的寬度,並用前導零填充:
std::cout << std::setw(10) << std::setfill('0') << std::rand() << '\n';
您可以生成一個介於100000000到999999999之間的隨機整數(所有9位數字),如下所示:
#include<cstdlib>
unsigned int num1 = rand()%900000000+100000000;
在cstdlib
,我的系統上的RAND_MAX
是2147483647(Debian Squeeze g ++ 4.4)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.