C++中如何累加for循环生成的1-6随机数?
解决C++随机数累加求和的问题
嘿,我看到你作为C++新手遇到的小麻烦啦!咱们来快速找出问题所在,然后把它搞定~
核心问题分析
你现在的代码里,累加的不是生成的随机数,而是循环的计数器x和y!比如第一个循环里sum1=sum1+x,这里的x是从1到10的循环变量,所以sum1最后会是1+2+...+10=55,完全和随机数没关系,这就是求和不对的根源哦!
修正后的代码
我们需要把每次生成的随机数先存到一个临时变量里,再把这个变量加到总和里,另外还要记得初始化随机数种子,不然每次运行程序得到的随机序列都是一样的:
#include <iostream> #include <cstdlib> #include <ctime> // 用于初始化随机数种子 using namespace std; int main(){ int sum1=0, sum2=0; // 初始化随机数种子,让每次运行的随机数都不一样 srand(time(0)); // 生成第一组10个随机数并累加 cout << "第一组随机数:" << endl; for(int i = 1; i <= 10; i++) { // 用i做循环计数器,避免和随机数变量混淆 int rand_num = 1 + (rand() % 6); // 生成1-6的随机数并存起来 cout << rand_num << endl; sum1 += rand_num; // 累加随机数到sum1 } cout << "----------------" << endl; // 生成第二组10个随机数并累加 cout << "第二组随机数:" << endl; for(int i = 1; i <= 10; i++) { int rand_num = 1 + (rand() % 6); cout << rand_num << endl; sum2 += rand_num; } cout << "-----------------" << endl; // 输出总和并比较 cout << "第一组总和:" << sum1 << endl; cout << "第二组总和:" << sum2 << endl; if(sum1 > sum2) { cout << "第一组总和更大!" << endl; } else if(sum2 > sum1) { cout << "第二组总和更大!" << endl; } else { cout << "两组总和相等!" << endl; } return 0; }
关键修改点说明
- 新增了
<ctime>头文件,并用srand(time(0))初始化随机数种子,基于当前时间生成不同的随机序列,这样每次运行程序得到的随机数都不一样。 - 每次循环生成的随机数先存入
rand_num变量,再输出和累加,确保我们累加的是随机数本身,而不是循环计数器。 - 把循环变量改成了
i,避免和随机数变量混淆,代码可读性更好。 - 最后加上了你原本计划的两组总和比较逻辑,直接就能看到结果啦!
新手小提示
- 变量命名尽量清晰,比如
sum1可以改成group1_sum,这样一眼就能知道它的作用。 - 记得
rand() % 6会生成0-5的整数,加上1之后才是1-6的随机数,这部分你原来的写法是对的哦!
内容的提问来源于stack exchange,提问作者Sined Strategy
相关产品推荐
相关产品推荐

