【问题标题】:Estimating probability of a score (Pig) C++估计分数的概率(猪)C++
【发布时间】:2015-05-14 20:03:16
【问题描述】:

(我使用的是 C++,抱歉!)

我需要模拟一个猪游戏的单回合。用户定义一个“保持”值,然后掷骰子直到达到/通过该值,或者直到掷出 1,将分数设置为 0 并结束回合。

还有另一个值,turnNum,如果你愿意的话,它将决定使用该 holdNum 模拟该转弯的次数。

我遇到困难的地方是它需要输出每次尝试的分数,以及它的估计概率,概率加起来为 1.000000 (100%)。

例如:如果保持值为 21,而我们运行转弯模拟的次数为 4,结果可能如下所示:

得分/估计概率:

0/.500000

21/.250000

22/.250000

23/.000000

24/.000000

25/.000000

26/.000000

这意味着我们的模拟命中 0 两次、21 一次和 22 一次。

我已经拥有了我需要的大部分代码(单圈函数,模拟骰子的函数),我只是不知道如何让它在每次获得特定分数时“记住”它,以便它可以递增所以我可以将转弯模拟的次数除以该数字的概率。

不一定要求为我编写代码,只是朝着正确的方向戳。如有需要,我可以发布其他功能。

【问题讨论】:

    标签: c++ probability


    【解决方案1】:

    根据您的语言,此答案可能会有所不同。但我假设您使用的是 c++ 或 java 或具有所需类型的类似语言。

    选项 A

    通常在这种情况下,我会使用一个动态数组来存储所有分数,然后您可以轻松地遍历该数组并在最后计算您需要的内容。

    为了让它变得超级简单,您可以使用标准的排序例程并根据大小对数组进行排序,然后您可以很容易地获得每个值的数量。

    选项 B

    另一种解决方案是使用映射或字典类型,将特定值映射到另一个值,在这种情况下,它会将您的分数映射到每次获得该分数时递增的计数。

    类似这样的东西 (c++)

    map<int,int> myMap; //creating the std::map
    myMap[thescore]++; //incrementing the score variable
    

    你有很多不同的选择!

    【讨论】:

    • 完全忘记提及它是 c++ 抱歉。假设此时尚未学习数组。我是否为每个可能的分数(即 0,保持数,直到保持数 +5)创建一个变量,然后在每次出现其中一个分数时递增?
    • 好吧,我想你可以,但你不必做很多打字!如果您还没有机会了解数组,也许现在是个好时机。我相信你!
    • 是的!你说对了。你甚至不需要这个问题。 :-p
    • 这是最好的问题——你只要问就可以找到答案!也许这就是像这样的网站如此有用的原因之一。
    • @wizebin 感谢您的帮助!是的,我可以继续学习数组,但我实际上是在帮助一个朋友,显然他们必须在他们在课堂上学到的知识的限制内工作(别担心我不只是给出答案)。
    猜你喜欢
    • 1970-01-01
    • 2014-08-11
    • 2014-04-07
    • 2021-03-14
    • 2015-07-29
    • 1970-01-01
    • 2017-11-20
    • 2020-08-05
    • 1970-01-01
    相关资源
    最近更新 更多