掷骰子python代码_Python之使用Pygal模拟掷骰子

本文介绍了如何使用Python的Pygal库创建可缩放的矢量图形,以分析掷骰子的结果。通过模拟掷骰子并记录结果,我们计算了每个点数出现的频率,并生成了直方图。结果显示,所有点数出现的次数相对均衡,没有显著偏斜。此外,文章还提供了安装Pygal的步骤,并鼓励读者在不同设备上查看图表,以体验其自动缩放的特性。
摘要由CSDN通过智能技术生成

引言

在本节中,我们将使用Python可视化包Pygal来生成可缩放的矢量图形文件。对于需要在尺寸不同的屏幕上显示的图表,这很有用,因为它们将自动缩放,以适合观看者的屏幕。如果你打算以在线方式使用图表,请考虑使用Pygal来生成它们,这样它们在任何设备商显示时都会很美观。

在这个项目中,我们将对掷骰子的结果进行分析。掷6面的常规骰子时,可能出现的结果为1~6点,且出现每种结果的可能性相同。然而,如果同时掷两个骰子,某些点数出现的可能性将比其他点数大。为确定哪些点数出现的可能性最大,我们将生成一个表示掷骰子结果的数据集,并根据结果绘制出一个图形。

在数学领域,常常利用掷骰子来解释各种数据分析,但是它在赌场和其他博弈场景中也得到了实际应用,在游戏《大富翁》以及众多的角色扮演游戏中也是这样。

安装Pygal

请使用pip来安装pygal,我们只需要执行命令:

pip install --user pygal==1.7

就可以把pygal安装上了。

Pygal画廊

要了解Pygal可创建什么样的图表,请查看图表类型画廊,我们只需要去pygal的官方网站查看相关文档即可。

下面我们来创建一个类模拟掷一个骰子:

377adab44aed2e73ebd148ae634a708f86d6facd.png?token=6c69bfeac974a83011c8e9223fe50954&s=C9C0B34253F49E690679C80B0300A0C3

方法__init__( )接受一个可选参数。创建这个类的实例时,如果没有指定任何实参,面熟默认为6;如果指定了这个实参,这个值将用于设置骰子的面数。骰子是根据面数命名的,6面的骰子名为D6,8面的骰子名为D8,以此类推。

方法roll( )使用函数randint( )来返回一个1和面数之间的随机数。这个函数可能返回起始值,终止值num_sides或这两个值之间的任何整数。

掷骰子

使用这个类创建图表前,先来掷D6骰子,将结果打印出来,并检查结果是否合理:

91ef76c6a7efce1b8cea3a374b1a22dab68f65de.png?token=062a26b2b5f7d144cc915149d16ba22b&s=61F203640AE0B77E5E59100F0300E0C2

我们首先创建了一个Die实例,其面数为默认值6。然后掷骰子100次,并将每次的结果都存储在列表results中。下面是一个实例结果集。

4a36acaf2edda3cc85564409e4a2e805213f923e.png?token=2513630a3f8111f7b23b63b7a0ae7428&s=6BC213665EEDBB720CF8DD060300E0C1

通过快速扫描这些结果可知,Die类看起来没有问题。我们见到了值1~6,这表明返回了最大和最小的可能值;我们没有见到值0和7,这表明结果都在正确的范围之内。我们还见到了1~6之间的其他所有可能结果都在我们的数据集中出现了。

分析结果

为了分析掷一个6面的骰子结果,我们计算每个点出现的次数:

f703738da977391290c89f1d1d52571c377ae2b4.png?token=f4827ac518b7240a8cb6444c0d74f860&s=61F2836452B4B26D5C755C0F0300E0C2

由于我们将使用Pygal来进行分析,而不是将结果打印出来,因此可以将模拟掷骰子的次数增加到1000次,为了分析结果我们创建了空列表frequencies,用于存储每种点数出现的次数。然后我们遍历可能的点数(这里为1~6),计算每种点数在results中出现了多少次,并将这个值附加到列表frequencies的末尾。接下来,我们在可视化之前将其打印出来:

30adcbef76094b3697a9ab7c4787addd8d109d3c.png?token=1843702a41b5301e09486930ec565fd8&s=2BC213668FE08F700CD9FD060300E0C1

结果看起来是合理的,我们看到了6个值:掷D6骰子的时候可能出现每个点数对应一个;我们还发现,没有任何点数是高出其他点数很多的。

接下来我们就可以利用这些数据进行我们直方图的绘制啦

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值