(我正在使用C ++,抱歉!)
我需要模拟一场Pig游戏。用户定义了一个" hold"值,并且掷骰子直到满足/传递该值,或直到滚动1,这将得分设置为0并结束转弯。
还有另一个值,turnNum,如果愿意的话,将决定使用该holdNum模拟转弯的次数。
我遇到的问题是,它需要输出每次尝试的分数以及估计的概率,概率加起来为1.000000(100%)。
例如:如果保持值为21,并且我们运行转弯模拟的次数为4,则结果可能如下所示:
得分/估计概率:
0 / 0.500000
21 / 0.250000
22 / 0.250000
23 / 0.000000
24 / 0.000000
25 / 0.000000
26 / 0.000000
这意味着我们的模拟两次击中0次,21次击出一次,22次击中。
我已经拥有了大部分我需要的代码(单圈功能,模拟骰子的功能),我只是不知道如何制作它"记得"每当它得到一个特定的分数,以便它可以递增,所以我可以将转弯模拟的数量除以该概率的数字。
不一定要求为我编写代码,只是在正确的方向上戳。如有必要,我可以发布其他功能。
答案 0 :(得分:0)
根据您的语言,这个答案可能会有所不同。但我假设您使用的是c ++或java或类似的语言,而且还有所需的类型。
选项A
通常在这种情况下,我会使用动态数组来存储所有分数,然后您可以轻松地浏览该数组并计算最终所需的内容。
为了使它非常简单,您可以使用标准排序例程并根据大小对数组进行排序,然后您可以非常轻松地获取每个值的数量。
选项B
另一种解决方案是使用将特定值与另一个值相映射的地图或字典类型,在这种情况下,它会将您的分数映射到每次获得该分数时都会增加的计数。
像这样(c ++)
map<int,int> myMap; //creating the std::map
myMap[thescore]++; //incrementing the score variable
你有很多不同的选择!