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 名软件开发人员写一些新东西。
如果你喜欢我的文章,点赞,关注,转发!
标签:帮助,骰子,dice,Python,代码,num,喜欢,distribution,sides From: https://blog.51cto.com/u_12409319/6232515