1. 程式人生 > >【Python-3.5】Pygal模擬骰子點數,分析結果視覺化

【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')
條形圖效果如下: