如何使重新启动此循环,当用户输入 1 时,并在 0 时停止

How to make restart this loop , when user enters 1, and stop when 0

本文关键字:并在 输入 用户 重新启动 何使 循环      更新时间:2023-10-16

我试图在 while 循环中生成一个数字"6",然后计算这个循环在得到数字 6之前必须运行多少次,然后如果用户输入 1 这个循环将再次运行,再次生成数字 6 并计算尝试次数,但我面临的问题是,当我输入 1 时,我得到的结果与上一个循环相同。

#include <iostream>
#include <cstdlib>    // random numbers header file//
#include <ctime>    // used to get date and time information
using namespace std;
int main()
{

int counter = 0;
int roll = 0;
int userChoice =1;
int total = 0;
float average = 0;
int programCounter = 0;
srand(time(0));
while (userChoice > 0)
{
while (roll != 6)
{
roll = rand() % 6 + 1; // generate a random number  
counter++;
}
total = total + counter;

cout << "Do you want to continue?" << endl;
cout << "Enter positive number to continue" << endl;
cout << "To terminate enter 0" << endl;
cin >> userChoice;

programCounter++;
}
average = total / programCounter;
cout << "Avarage number of rolls before getting 6 is " <<  average;

}

我的预期结果是让随机数生成器在 while 循环中再次工作并再次生成数字 6,因此稍后我可以使用滚动次数来计算滚动 6 之前的平均滚动次数。

在这里:

while (roll != 6)

在滚动数字之前检查条件。一旦你掷出 6,条件将永远不会false.

一般来说,最好只在需要时声明变量,这样可以避免代码中的错误(counter代码中未正确重置

(:
int roll = 0;
int counter = 0;
while (roll != 6)
{
roll = rand() % 6 + 1; // generate a random number  
counter++;
}

另请注意,对于简单玩具随机性以外的任何内容rand应避免。请改用<random>中提供的设施。

相关文章: