当前位置: 首页 > 知识库问答 >
问题:

模辊程序故障

何乐
2023-03-14
    null
  • 如果滚动7,则该玩家获胜
  • 如果滚动与之前相同的和,则该玩家输
  • 如果没有,则播放器再次滚动,直到满足这两个条件中的任何一个。

最后,它计算出获胜游戏的百分比。我的问题是,我应该得到一个百分比的游戏赢得约39%-60%,根据一个同事,但每次我运行程序,我得到约20%,我不明白为什么。我做错什么了吗?谁能帮帮我吗?

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

main()
{   
int dieOne, dieTwo, keyValue, value, wins = 0, firstWins = 0, subWins = 0, loss = 0, count=0;
double percentWin, percentFirstWins, percentSubWins;
srand(time(NULL));

do{
dieOne = rand() % 6 + 1;
dieTwo = rand() % 6 + 1;
value = dieOne + dieTwo;
count++;


if (value==7||value==11) {
    firstWins++;
    wins++;
}

else if (value== 2||value==3||value==12) {
    loss++;
}

else {
    do{ 
    keyValue = value;

    dieOne = rand() % 6 + 1;
    dieTwo = rand() % 6 + 1;
    value = dieOne + dieTwo;
    count++;

    if (value==7) {
    subWins++;
    wins++;
    }

    else if (value = keyValue) { 
        loss++;
    }

    } while ( value != 7 && value != keyValue );
}
} while (count <= 20000);

    percentWin = (double) wins/count * 100;
    percentFirstWins = (double) firstWins/count * 100;
    percentSubWins = (double) subWins/count * 100;
    printf("You won %.1lf percent of your games! \nYou won %.1lf percent of games on the first roll.\nYou won %.1lf percent of games on the second roll.\n", percentWin, percentFirstWins, percentSubWins );

    system("pause");
}

掷7有6种可能的方法,掷11有两种可能的方法。
第一次掷骰子共有8种可能的方法。
掷骰子有36(6^2)种可能的方法。这意味着你在第一次滚动中有8%的机会获胜,或者大约22%的时间。

共有1个答案

柳宪
2023-03-14

这可能是导致您的问题的原因:

else if (value = keyValue) {

你在分配,而不是比较。这将总是评估为真,从而人为地夸大你的损失。这里应该使用==而不是=

此外,对于既不是赢也不是输的滚动,您不需要增加winslos计数器,而是添加到count。所以最终会出现赢+输!=count的情况。在计算获胜百分比时,请尝试将其计算为wins/(loss+wins)

 类似资料:
  • 我是编程新手,我正在尝试用C#构建一个掷骰子游戏。 程序要求用户输入边数,然后用随机数掷骰子。 我有以下伪代码: 向用户询问边数。 用一个随机数滚动骰子,最大范围是边的数量。 告诉用户滚动的号码 我的问题是,我如何掷骰子,在用户指定的范围内生成一个随机数?

  • YAML模式被定义为一组标签的组合,并包括用于解析非特定标签的机制。 YAML中的故障安全模式以这样的方式创建,即它可以与任何YAML文档一起使用。 它也被视为通用YAML文档的推荐架构。 类型 故障安全模式有两种类型:通用映射和通用序列。 通用映射 它代表一个关联容器。 这里,每个键在关联中是唯一的,并且映射到恰好一个值。 YAML对键定义没有任何限制。 下面给出了表示通用映射的示例 - JSO

  • "小镇故事" 官网微信小程序 织梦CMS微信小程序 织梦(dede)小程序进行接口功能添加,不改动原有代码,简单配置就可以使用。 主要功能  首页    头部banner、搜索、栏目导航、热门排行、推荐内容、最近内容 栏目   分类栏目展示(图片,标题,说明) 列表    文章   作者(关注),点赞,喜欢收藏,猜你喜欢,评论,转发,海报,鼓励,tag标签 TAG  独立列表  推荐专题页   推

  • 起源 早在2003年的时候,那时的jME还不叫jMonkeyEngine,也不是一款游戏引擎。作者只是想要尝试一下Java的3D图形性能,于是启动了一个项目,只实现了最基本的场景图管理和图形渲染。 作者的名字叫做Mark Powell,他在论坛的昵称叫做MojoMonk。这个项目被命名为MojoMonkey,后来更名为jMonkeyEngine。 Mark Powell在实现了一个基本的图形引擎(

  • 我用的是阿尔杜伊诺式的。我遇到了的奇怪行为。Arduino通过COM4上的USB供电和通信。我正在64位Windows ;7上运行Eclipse。 我当前的Arduino代码看起来如下所示;延迟是为了让我可以启动和停止Java服务并查看Arduino IDE中的串行窗口,inputBuffer是一个字符数组。 下面是Java端的代码。我修改了它的双向通信与串行端口。这只在启动时发送一个字节数组。

  • 我正在尝试实现筛选算法,它会询问连续数字列表的大小,并打印出该列表中的素数,但我收到了一个seg错误:11错误。 这是我的代码: