使用pygal来模拟扔骰子
模拟骰子
安装Pygal:
linux\ios: pip install --user pygal== 1.7
windos: python -m pip install --user pygal==1.7
使用random模块中的randint函数来返回随机的骰子点数。
from random import randint
class Die():
def __init__(self,num_sides=6):
self.num_sides = num_sides
def roll(self):
return randint(1,self.num_sides)
上述代码片创建了和骰子有关的类,我们可以得到相关数据了现在。
检索各个值
列表名.count(目标,起始位置,终止位置):该函数可以得出对应目标在列表中的数量。
我们将每个值对应的个数储存在列表中
frequencies = []
for value in range(1,die.num_sides+1):
frequency = results.count(value)
frequencies.append(frequency)
对结果进行可视化
本次重点,pygal的数据可视化
相关函数:
函数 | 作用 |
---|---|
变量 = pygal.Bar() | 创建一个pygal.Bar()实例 |
.x_labels = [ ] | x轴的横坐标值 |
.x_title = 和 .y_title = | x,y坐标的标题 |
.add('标签’,[值]) | 为每一个x坐标提供值 |
.render_to_file(‘命名.svg’) | 将图表渲染为svg文件 |
前面所列出的后三个都是pygal.Bar()实例的方法。保存为SVG文件后使用浏览器打开最佳。
from rw import Die
import pygal
die= Die()
results = []
for roll_num in range(1000):
result = die.roll()
results.append(result)
frequencies = []
for value in range(1,die.num_sides+1):
frequency = results.count(value)
frequencies.append(frequency)
hist = pygal.Bar()
hist.title="D6 for 1000 times"
hist.x_labels = ['1','2','3','4','5','6']
hist.x_title = "Result"
hist.y_title = "frequencies"
hist.add('D6',frequencies)
hist.render_to_file('die_visual.svg')
结果:
另外,可以创建两个骰子,也可以更改骰子的面数等等,x坐标如果过多可以用循环来生成。模拟次数越多,越准确。