使用pygal進行擲骰子資料分析

2021-09-13 04:04:27 字數 3568 閱讀 6650

python -m pip install  -

-user pygal

安裝好之後可以輸入下列命令列,出現下圖就是安裝正確。

是乙個6面骰子和10面骰子,投擲5000次的直方圖。

from random import randint

import pygal

class

die():

'''表示乙個骰子的類'''

def__init__

(self, num_sides=6)

: self.num_sides = num_sides

defroll

(self)

:'''返回乙個位於1和骰子面數之間的數'''

return randint(

1, self.num_sides)

die1 =die(6)

die2 = die(num_sides=10)

#擲幾次骰子,並儲存至列表中

results =

for roll_num in

range

(5000):

result = die1.roll(

)+ die2.roll(

)print

(len

(results)

)#分析結果

frequencies =

max_result = die1.num_sides + die2.num_sides

for values in

range(2

, max_result+1)

: frequency = results.count(values)

print

(frequencies)

hist = pygal.bar(

)hist.title =

'results of rolling one d6 1000times'

hist.x_labels =

range(2

, max_result+1)

hist.y_labels =

range(0

,5001

,500

)hist.y_title =

'frequency of result'

hist.x_title =

'frequency if result'

hist.add(

'd6+d10'

, frequencies)

hist.render_to_file(

'die_visual.svg'

)

這是資料直方圖

'''將擲骰子的結果儲存在列表中'''

for roll_num in

range

(1000000):

result = die.roll(

)print

(len

(results)

)frequencies =

'''將點數出現的頻率儲存在列表中'''

for frequency in

range(1

, die.num_points+1)

: value = results.count(frequency)

print

(frequencies)

x_values =

list

(x for x in

range(1

, die.num_points+1)

)y_values = frequencies

plt.plot(x_values, y_values, linewidth=5)

plt.title(

'd6'

)plt.xlabel(

'x', fontsize=14)

plt.ylabel(

'y', fontsize=14)

plt.show(

)

from random import choice

import pygal

class randomwalk():

def __init__(self, num_points=5000):

self.num_points = num_points

'''使起點為0'''

self.x_values = [0]

self.y_values = [0]

def fill_walk(self):

while len(self.x_values) < self.num_points:

'''控制方向和距離'''

x_directions = choice([1, -1])

x_distance = choice(list(i for i in range(0, 7)))

x_step = x_directions * x_distance

y_directions = choice([1, -1])

y_distance = choice(list(j for j in range(0, 7)))

y_step = y_directions * y_distance

'''禁止原地踏步'''

if x_step == 0 and y_step == 0:

continue

'''計算下一步的位置'''

next_x = self.x_values[-1] + x_step

next_y = self.y_values[-1] + y_step

rw = randomwalk()

rw.fill_walk()

hist = pygal.xy(stroke=false)

hist.title = 'random walk'

hist.add('d6', [(rw.x_values[i], rw.y_values[i]) for i in range(0, rw.num_points)])

hist.render_to_file('d6_die.svg')

使用Pygal模擬擲骰子

將使用python視覺化包pygal來生成可縮放的向量圖形檔案。對於需要在尺寸 不同的螢幕上顯示的圖表,這很有用,因為它們將自動縮放,以適合 者的螢幕。使用pygal來建立直方圖 from random import randint class die 表示乙個骰子的類 def init self,...

學習記錄 使用Pygal 模擬擲骰子

建立乙個骰子類 die from random import randint class die def init self,num sides 6 一共六面 self.num sides num sides defroll self 返回1 6 中的隨機一位數字 return randint 1,...

資料視覺化 使用pygal模擬擲骰子

die類模擬擲骰子 同時擲兩個面數不同的骰子,乙個六面,乙個10面,統計兩點數之和的個數繪圖統計 同時擲兩個面數不同的骰子 import pygal 建立乙個d6和乙個d10 die 1 die die 2 die 10 擲骰子多次,並將結果儲存在乙個列表中 results for roll num...