C ++初学者使用while循环生成随机数

c++ beginner generate random numbers using while loop

本文关键字:循环 随机数 while 初学者      更新时间:2023-10-16

生成 [- 50, 50 ] 范围内的 10 个随机整数,然后输出其中最大的整数。 我尝试的是

#include <iostream>
#include <ctime>
using namespace std;
int main(){
int startNum = -50;
int endNum = 50;
int rand = 0;
int result = 0;
srand(time(0));
rand = (rand % (endNum - startNum +1 ) +startNum);
int i = 0;
int largestNum = 0;
while (i <9){
result = rand; 
if (result > largestNum){
largestNum = rand;
i++;
}
}
cout << "the largest number is " << largestNum << endl; 
system("pause");
return 0;
}
rand()

被认为是不好的,主要是因为你无法真正生成均匀分布。我强烈建议C++随机库。您也没有使用rand().我不知道你在那里做什么。

无论如何,这里有一个优雅的解决方案:

#include <iostream>
#include <random>
#include <algorithm>
#include <limits>
int main()
{
std::random_device rd{};
std::mt19937 eng{rd()}; // or std::default_random_engine e{rd()};
std::uniform_int_distribution<int> dist{-50, 50};
int largestNum = std::numeric_limits<int>::min();
for (int i = 0; i < 10; ++i)
{
largestNum = std::max(largestNum, dist(eng));
}
std::cout << "the largest number is " << largestNum  << std::endl;
}

类似的问题已经出现,但这里有一个完整的工作示例:

int main()
{
int i=0;
int startNum = -50;
int endNum = 50;
int maxNum = startNum;
std::cout << "The 10 random numbers:n";
while (i < 10)
{
int num = (rand() % (endNum - startNum + 1)) + startNum; 
if (num > maxNum)
maxNum = num;
std::cout << num << "n";
++i;
}
std::cout << "The largest number is: " << maxNum << "n";
return 0;
}

虽然我真的不建议使用带有循环的兰德。这不是 c++ 的方法。看看这个答案。