使用C++模拟单掷骰子
single dice roll simulation with C++
我正在编写一个程序来模拟具有随机函数的掷骰子。这是我的代码,但我有无限循环。该程序应该询问用户他们想掷骰子多少次。然后我使用 for 循环将骰子从 1 掷到 6我把所有这些都放在一个do-while中,以便只允许用户在1和6之间进行选择,如果选择在1到6之外,它应该说这是一个无效的选择。我不允许对此使用函数或数组
#include<iostream>
#include <iomanip>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
//i is the counter for the loop
int i = 0;
//store total count for landing number
int num1 =0;
int num2 =0;
int num3 =0;
int num4 =0;
int num5 =0;
int num6 =0;
int Num1 =0;
int Num2 =0;
int Num3 =0;
int Num4 =0;
int Num5 =0;
int Num6 =0;
int randNum;
int times;
//User selection
int selection;
/* initialize random seed: */
srand ((unsigned int)time(NULL));
/* generate random number: */
randNum = rand() % 6 + 1;
cout<<"How many times would you like to roll the dice? " << endl;
cin >> selection;
do{
for(i = 1; i <= selection; i++)
{
if(randNum==1)
{
num1++;
}
else if(randNum==2)
{
num2++;
}
else if(randNum==3)
{
num3++;
}
else if(randNum==4)
{
num4++;
}
else if(randNum==5)
{
num5++;
}
else if(randNum==6)
{
num6++;
}
}
Num1 = num1/times *100;
Num2 = num2/times *100;
Num3 = num3/times *100;
Num4 = num4/times *100;
Num5 = num5/times *100;
Num6 = num6/times *100;
cout <<"# Rolled t # Times t % Times" << endl;
cout <<"----- t ------- t -------" << endl;
cout <<" 1 t " << num1 << "t " << fixed << setprecision(2) << Num1 << "%n";
cout <<" 2 t " << num2 << "t " << fixed << setprecision(2) << Num2 << "%n";
cout <<" 3 t " << num3 << "t " << fixed << setprecision(2) << Num3 << "%n";
cout <<" 4 t " << num4 << "t " << fixed << setprecision(2) << Num4 << "%n";
cout <<" 5 t " << num5 << "t " << fixed << setprecision(2) << Num5 << "%n";
cout <<" 6 t " << num6 << "t " << fixed << setprecision(2) << Num6 << "%n";
}
while(i >= 1 || i <= 6);
{
cout << "This is an invalid number. n"
<< "The number of rolls should be equal to or greater than 1.n"
<< "Please enter again.n";
}
}
你的条件语句:i = 1; i <= selection; i++
应该进入决赛。
尝试:
do {
if (randNum==1) {
num1++;
} else if(randNum==2) {
num2++;
} else if(randNum==3) {
num3++;
} else if(randNum==4) {
num4++;
} else if(randNum==5) {
num5++;
} else if(randNum==6) {
num6++;
}
i += 1;
} while (i <= selection);
无限循环是do
- while
...
我不确定你在那里想做什么,但你在测试中总是会得到一个大于 1 或小于 6 的数字 - 你不能同时失败......
相关文章:
- 如何模拟不同边数的骰子滚动?
- C++:为什么我的掷骰子函数在掷骰子数量时只返回偶数整数?
- 掷2个骰子1000次
- C++ 简单的掷骰子 - 如何返回多个不同的随机数
- 如何创建一个在C++中生成 3 个掷骰子的函数
- DiceSum - 如果骰子总和不是某个数字,如何扩展 if/if-else 语句以重新掷骰子
- 使用C++模拟单掷骰子
- 模拟两个骰子的滚动并保存在矢量中
- 数组的掷骰子
- C ++骰子游戏模拟掷两个骰子
- 掷骰子(基于文本的RPG)C++不需要的数字和字母序列输出
- 骰子游戏,要求我们在每次掷骰子前对回合进行编号并加*
- C++ 小直(如 yahtzee 或扑克).5 掷骰子 (1234)/(2345)/(3456)
- C++我的数组没有保存我的掷骰子
- C ++掷骰子分析仪(2D阵列)
- 掷骰子模拟器C++
- 如何从掷骰子中找到最小值和最大值
- 掷骰子 - 随机数未正确生成C++
- c++对一个数字进行除法处理,每次掷骰子最多显示60个字符
- 为什么掷骰子的结果如此均匀