1、pygal_die.py
from random import randint
#創(chuàng)建一個類,隨機(jī)搖動骰子
class Die():
def __init__(self,num_sides=6):
self.num_sides = num_sides
#創(chuàng)建一個方法鸠补,使用randint函數(shù)返回隨機(jī)數(shù)
def roll(self):
return randint(1,self.num_sides)
2昌妹、pygal_die_visual.py
分析擲一個D6骰子的結(jié)果
from pygal_die import Die
import pygal
#創(chuàng)建一個實(shí)例
die = Die()
#利用for循環(huán)寝衫,執(zhí)行一千次擲骰子,并將其存入一個列表中
results = []
for roll_num in range(1000):
result = die.roll()
results.append(result)
#分析每個點(diǎn)出現(xiàn)的次數(shù)啸澡,并將其存入列表中
frequencies = []
for value in range(1,die.num_sides+1):
frequency = results.count(value)
frequencies.append(frequency)
#對結(jié)果進(jìn)行可視化
hist = pygal.Bar()
hist.title = "Results of rolling one D6 1000 times"
hist.x_labels = [1,2,3,4,5,6]
hist.x_title = "Results"
hist.y_title = "Frequency of Result"
hist.add('D6',frequencies)
"""
add()方法是將一系列的值添加到圖標(biāo)中(傳遞兩個實(shí)參袖订,一個給添加值指定的標(biāo)簽,還有一個列表嗅虏,其中包含將出現(xiàn)的值)
"""
hist.render_to_file('die_visual.svg')
"""最后將其存儲在一個文件中洛姑,這種文件的擴(kuò)展名必須得為.svg,可使用web瀏覽器打開查看皮服。將鼠標(biāo)放到任何圖形楞艾,可看到
與之對應(yīng)的數(shù)據(jù)参咙。
3、pygal_difference_visual.py
同時擲一個D6和一個D10面骰子硫眯,分析擲50000次出現(xiàn)的結(jié)果
from pygal_die import Die
import pygal
#創(chuàng)建一個D6實(shí)例蕴侧,一個D10實(shí)例
die_1 = Die()
die_2 = Die(10)
#將兩者之和存入列表中
results = []
for num_roll in range(50000):
result = die_1.roll() + die_2.roll()
results.append(result)
frequencies = []
max_result = die_1.num_sides + die_2.num_sides
"""將兩面的最大點(diǎn)數(shù)相加,模擬實(shí)例两入,而不是使用range(2,17)"""
for value in range(2,max_result+1):
frequency = results.count(value)
frequencies.append(frequency)
hist = pygal.Bar()
hist.title = "Result of rolling two D6 dice 1000 times"
hist.x_labels = [2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]
hist.x_title = "Result"
hist.y_title = "Frequency of Result"
hist.add("D6+D10",frequencies)
hist.render_to_file('dice_visual.svg')