分享

我喜欢 Python,因为它可以帮助我回答小问题

 技术的游戏 2023-05-23 发布于广东


5-10 行代码可能非常有用

一遍又一遍,我看到这个教训适用。只需几行 Python 就可以让我的生活更轻松或回答一个简单的问题。

养成用代码快速回答自己的好奇心的习惯。它将使您成为更好的开发人员,并且您会在此过程中获得很多乐趣!

骰子分布

今天早上,我在想棋盘游戏。

在这个游戏中,您掷两个骰子。两个骰子的总和会影响游戏接下来发生的事情。(游戏并不是很重要。我只是在考虑两个骰子的结果。)

我想知道——从统计学上来说——当掷两个骰子时掷出给定值的概率是多少?

这是一个已经回答过很多次的问题。我确定我可以搜索互联网并快速找到答案。

相反,我花了几分钟试图用 Python 自己回答这个问题!

我的结果

我喜欢 Python 的一点是,当您编写一个小的、一次性的脚本时,它不需要是完美的。

你可以只写几行乱七八糟的代码,完成工作,然后继续。它是用于快速脚本完成任务或回答简单问题的终极编程语言。

基本上,我使用一些嵌套的 for 循环来组合两个骰子。然后,我会记录我看到该值的次数。

在结束时dice_distribution(),我将这些计数转换为百分比。

如果你想研究它,这里是全部的的代码。

def dice_distribution(num_sides: int) -> dict[int, float]:
"""
Get the distribution of possible results of two thrown dice
"""

distribution = {}
for x in dice_generator(num_sides):
for y in dice_generator(num_sides):
value = x + y
distribution.setdefault(value, 0)
distribution[value] += 1

num_possibilities = num_sides ** 2
distribution = {k: round((v / num_possibilities), 2) for k, v in distribution.items()}

print(distribution)


def dice_generator(num_sides: int):
for side in range(1, num_sides+1):
yield side

dice_distribution(6)

答案

结果如下:

如何阅读这本词典:

  • 字典的键是掷骰子的总值

  • 字典的值是滚动那个数字的概率

所以,你有 3% 的机会掷出 2。

你有 17% 的几率掷出 7。

字典结果检测

我承认在开发这个解决方案时,我去了 anydice.com 看看我的答案是否正确。

当我从网上看到的代码中发现错误时,我做了一些更改。

为什么?

在这一点上,我显然不仅仅是为了知道这个问题的答案而编写代码。答案就在我面前,而且格式更易读。

我出于好奇而编码。一种与生俱来的愿望,即在我的脑海中找出计算结果并正确映射问题。这是一种有趣的感觉,几乎就像解决难题或脑筋急转弯一样。

这种感觉就是我喜欢编码的原因。

如果您也有同感,那么在周一早上花 15 分钟来完成像这样的好奇心小项目,只是为了让您对代码保持学习、投入和兴奋。

每日清单

喜欢你在这里读到的吗?我每天早上为 2,000 名软件开发人员写一些新东西。

如果你喜欢我的文章,点赞,关注,转发!

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多