【Python-3.5】Pygal模拟骰子点数,分析结果可视化

使用Pygal模拟同时投掷两个骰子的点数和,本例中使用普通6面的骰子。

本例中涉及两个模块,die.py和dice_visual.py。其中die模块中定义roll方法,用于随机产生骰子的点数。运行dice_visual.py会在同目录下产生一个svg文件,在浏览器中打开就可看到条形图的分析结果。

代码如下:


die.py

from random import randint

class Die():
	"""表示一个骰子的类"""

	def __init__(self,num_sides=6):
		# 骰子默认为6面
		self.num_sides = num_sides

	def roll(self):
		"""返回1和骰子面数之间的一个随机数"""
		return randint(1,self.num_sides)


dice_visual.py

import pygal

from die import Die 

#创建一个骰子实例,6面的
die_1 = Die()
die_2 = Die()

#投掷骰子,记录结果
results = []
for roll_num in range(1000):
	result = die_1.roll() + die_2.roll()
	results.append(result)

#分析结果
frequencies = []
max_values = die_1.num_sides + die_2.num_sides
for value in range(2,max_values+1):
	frequency = results.count(value)
	frequencies.append(frequency)

#对结果进行可视化
hist = pygal.Bar()

hist.title = ("Results of rolling two D6 dice 1000 times.")
hist.x_labels = ['2','3','4','5','6','7','8','9','10','11','12']
hist.x_title = "Result"
hist.y_title = "frequency of Result"

hist.add('D6+D6',frequencies)

# 输出svg格式的文件
hist.render_to_file('die_visual.svg')


条形图效果如下:





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值