编辑:游戏的名称是掷骰子游戏,而不是废话。 感谢所有试图提供帮助的人,我忘了将ctrl = 1赋值放入for循环中。
我无法从这个垃圾游戏中得到想要的结果。这是代码:
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
int rolldice();
int main() {
srand(time(NULL));
int n;
float winrate;
float lossrate;
long int i;
long int ctrw,ctrloss;
ctrw= 0;
ctrloss= 0;
int ctrl= 1;
for(i=0;i<100000;i++) {
while(ctrl!=0) {
n= rolldice();
switch(n) {
case 7:
case 11:
ctrw++;
ctrl= 0;
break;
case 2:
case 3:
case 12:
ctrloss++;
ctrl= 0;
break;
default:
ctrl= 1;
break;
}
}
}
winrate= (float)ctrw/i * 100.0;
lossrate= (float)ctrloss/i * 100.0;
printf("Win rate is %.2f, loss rate is %.2f.",winrate,lossrate);
system("pause");
return 0;
}
int rolldice() {
int a= (rand()%6)+1;
int b= (rand()%6)+1;
return a+b;
}
如图所示,我试图通过播放100000次来计算此游戏的输赢率。但打印的是:赢率为0.00,损失率为0.00。 可能是一个简单的错误,但我找不到,也不想失去更多的时间。
答案 0 :(得分:3)
您需要更改此
for(i=0;i<100000;i++) {
while(ctrl!=0) {
到
for(i=0;i<100000;i++) {
ctrl = 1; // Restart the game
while(ctrl!=0) {
以这种方式重启游戏。如果你没有在游戏第一次成功完成游戏后结束游戏。