C ++初学者使用while循环生成随机数
c++ beginner generate random numbers using while loop
生成 [- 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++ 的方法。看看这个答案。
相关文章:
- 程序在尝试猜测它选择的随机数时进入无限循环?
- C++ - 如何保持半随机数组在循环中排序
- C ++初学者使用while循环生成随机数
- 在C++中创建随机数矩阵,无需循环
- 在 loop_C++ 中生成随机数,并在循环中生成数组 (OpenMP)
- C++生成多个随机数而不循环
- 而循环.出现随机数
- 本应生成 2 个介于 1 和 9 之间的随机数的程序C++只生成 6 和 9 并且没有正确循环
- 用循环生成随机数
- 简单循环不适用于随机数
- 当被要求使用随机数生成器时,C++程序在while循环中崩溃
- C++循环中调用伪随机数生成器函数 - 常量种子问题
- C++循环的随机数生成器
- 将随机数插入到数组中,其中每个值都是通过 for 循环输入的
- file.get()在循环C++后返回随机数
- 每次循环迭代都有相同的随机数
- 生成均匀分布的随机数(在循环中获得相同的数字)
- 为什么我在循环中使用随机数时得到相同的结果
- 使用for循环和rand生成100个随机数,并打印出最小和最大的数字
- 我能让我的while循环在每次循环时创建一个新的随机数吗