擲骰子——柱狀圖


跟着書做的 通過隨機模擬骰子的擲點情況 通過第三方庫畫成柱形圖 輸出到.svg文件



---Python語言實現

---pygal第三方庫

---實現了:

------------- 1.單個六面骰子擲點

------------- 2.兩個六面骰子擲點

------------- 1.單個六面骰子+單個十面骰子擲點


die.py

from random import randint

class Die():
	"""docstring for Die"""
	def __init__(self,num_sides=6):
		self.num_sides = num_sides

	def roll(self):
		return randint(1,self.num_sides)

die_visual.py

from die 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):
	frequencie = results.count(value)
	frequencies.append(frequencie)

hist = pygal.Bar()
hist.title = "results of D"+str(die.num_sides)+" 1000 times"
hist.x_labels = [str(x) for x in range(1,6+1)]
hist.x_title = "result"
hist.y_title = "frequency of result"
hist.add("D6",frequencies)
hist.render_to_file("die_visual.svg")

#print(frequencies)

dice_vision.py

import pygal
from die import Die

die_1 = Die()
die_2 = Die()

results = []
for roll_number in range(1000):
	result_1 = die_1.roll()
	result_2 = die_2.roll()
	result_sum = result_1+result_2
	results.append(result_sum)

frequencies = []
for value in range(1,die_1.num_sides+die_2.num_sides):
	frequency = results.count(value)
	frequencies.append(frequency)

hist = pygal.Bar()
hist.title = ("results of two D"+str(die_1.num_sides)+" 1000 times")
hist.x_labels = [str(x) for x in range(1,die_1.num_sides+die_2.num_sides+1)]
hist.x_title = "result"
hist.y_title = "frequency of result"
hist.add("D12",frequencies)
hist.render_to_file("dice_visual.svg")

different_dice.py
import pygal
from die import Die

die_1 = Die()
die_2 = Die(10)

results = []
for roll_number in range(1000):
	result_1 = die_1.roll()
	result_2 = die_2.roll()
	result_sum = result_1+result_2
	results.append(result_sum)

frequencies = []
for value in range(1,die_1.num_sides+die_2.num_sides):
	frequency = results.count(value)
	frequencies.append(frequency)

hist = pygal.Bar()
hist.title = ("results of  D"+str(die_1.num_sides)+" and D"+str(die_2.num_sides)+" 1000 times")
hist.x_labels = [str(x) for x in range(1,die_1.num_sides+die_2.num_sides+1)]
hist.x_title = "result"
hist.y_title = "frequency of result"
hist.add("D6 + D10",frequencies)
hist.render_to_file("different_dice.svg")


發佈了49 篇原創文章 · 獲贊 5 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章