Skip to content

Problem 9 (200pts)

实现max_scoring_num_rolls,它运行实验以确定,掷多少次(从1到10)骰子能让一轮的平均得分最大。 您的实现应使用make_averagedroll_dice函数。

如果两个掷骰次数在最大平均得分上打平,则返回较小的数字。 例如,如果3次和6次都达到最大平均得分,则返回3。

建议在进行解锁测试之前阅读此问题的doctest和doctest中显示的示例。

重要: 为了通过我们所有的测试,请确保您从1开始测试掷骰次数一直到10,而不是从10开始到1。

在编写任何代码之前,请解锁测试以验证您对问题的理解:

python ok -q 09 -u

解锁完成后,开始实现您的解决方案。您可以使用以下命令检查正确性:

python ok -q 09

提供的run_experiments函数调用max_scoring_num_rolls(six_sided)并打印结果。 您会发现,掷6个骰子能最大化使用六面骰子的roll_dice结果。

要调用此函数并查看结果,请使用 -r 标志运行hog.py

python hog.py -r

此外,run_experiments会将各种战略与always_roll(6)进行比较。 欢迎您根据需要更改run_experiments的实现。 请注意,在接下来的两个问题中实现picky_strategyswine_strategy之前,运行实验不会产生准确的结果。

一些实验可能需要运行一分钟。 您可以通过减少调用make_averaged时的试验次数来加快实验速度。

运行实验不会影响您在项目中的得分。

Solutions

def max_scoring_num_rolls(dice=six_sided, total_samples=1000):
    return max(range(1, 11), key=lambda x: make_averaged(roll_dice, total_samples)(i, dice))