1. 程式人生 > >pygal模擬擲骰子

pygal模擬擲骰子

    本次練習是通過python的pygal來模擬擲骰子的結果。我先創造了一個骰子類(Die),這個類的骰子都有6個面,點數分別是1~6。然後由這個類建立兩個例項die1和die2。模擬的是隨機投擲這兩個篩子n次,輸出這n次的投擲結果。為了方便分析,我輸出了這n(n=1000)次投擲中,不同點數出現的次數,並繪製了條形圖。具體程式碼如下:

import matplotlib.pyplot as plt
import pygal
from random import randint
#建立Die骰子類
class Die():
    def __init__(self,num_sides=6):
        self.num_sides=num_sides
    def roll(self):
        return randint(1,self.num_sides)
#建立例項
die1=Die()
die2=Die()
result=[]
#將每次投擲的點數和儲存在列表frequences中
for n in range(1000):
    a=die1.roll()+die2.roll()
    result.append(a)
frequences=[]
#統計各個點數和出現的次數並繪圖
for value in range(2,die1.num_sides+die2.num_sides+2):
    frequency=result.count(value)
    frequences.append(frequency)   
    #print("%d : %d"%(value,frequency))
print(frequences)
hist=pygal.Bar()
hist.title="Result of rolling one D6 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',frequences)
hist.render_to_file('die_visual.svg')

輸出如下(截圖):


    輸出的圖片為svg格式,當滑鼠指向某一點數時,會顯示出該點數出現的次數。由上圖發現,當同時投擲兩個6面篩子,各點數出現的次數符合正態分佈。這一分佈也符合數學邏輯。投擲一次所有可能出現的結果如下:


由上圖可以看出共有11中結果,不同結果出現的次數是不一樣的。所以各點數和出現的概率為:


各個點數出現的概率也服從正態分佈,結果和投擲1000次的結果吻合。

相關推薦

pygal模擬

    本次練習是通過python的pygal來模擬擲骰子的結果。我先創造了一個骰子類(Die),這個類的骰子都有6個面,點數分別是1~6。然後由這個類建立兩個例項die1和die2。模擬的是隨機投擲這兩個篩子n次,輸出這n次的投擲結果。為了方便分析,我輸出了這n(n=100

python視覺化——使用pygal模擬

#die.py # coding=gbk from random import randint class Die(): """表示一個骰子的類""" def __init__(sel

Python3——資料視覺化模組Pygal模擬

Pygal:Python視覺化包,生成可縮放的向量圖形檔案 Pygal安裝 PyCharm新增Pygal庫 模擬擲骰子 die.py from random imp

FPGA模擬

設計效果       每按同一個按鍵時會隨機得到一個1—6中的一個隨機數字,並用數碼管顯示得到的數值。對兩次按鍵得到的數值進行比較,若前者大,則最低兩位LED顯示為“亮”、“滅”,後者較大,則最後兩位LED顯示狀態改為“滅”、“亮”。設計方案       本次課程設計的實質是

模擬

以下程式碼能夠計算每種兩個骰子之和的準確概率分佈: int SIDES = 6; double[] dist = new double[2 * SIDES + 1]; for (int i = 1;

python應用-模擬-pygal

print pri ins side sid 技術分享 python應用 ima sel pygal安裝: Linux下: pip install pygal Windows下: python -m pip install pygal 效果如圖: # -*- coding

【NOIP2012模擬10.31】

Description 有兩個人在長度為N的數軸上走路。 每次每個人可以有相等的概率向前走1~m步。 如果超過N他會往回走(參考飛行棋) 先走到N的人贏。 現在先手在x,後手在y。 求先手贏

3星|《給你講個笑話:我是創業公司CEO》:創業成功就是上帝

第一桶金 管理 一個 kindle 上帝 小時 投資 bsp 合夥人 給你講個笑話:我是創業公司CEO 作者有過數次創業經歷,最後一次在濟南創業,後來公司搬到北京,看書中的交代公司目前好像還不算太成功。書中交代作者公司的業務是文化產品的策劃,沒細說做什麽,也沒說做成過

簡單C 程式

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

使用Jquery實現

直接新建一個html頁面,需要在head中引入jquery,js,一些css程式碼以及js程式碼,如下: <script type="text/javascript" src="jquery-1.8.3.min.js"></script> <

《上帝嗎---量子物理史話》曹天元

       書是別人推薦看的, 總體不錯, 而且對經典物理, 相對論, 量子力學有了一定的瞭解, 吹牛裝逼不成問題。很多時候, 隱隱約約地, 在我腦海中, 會出現絕對時空, 決定論, 概率, 不確定等等東西, 也算是巧了。 看了本書,基本有了答案, 感覺還是有收穫的。很多問

玩eos上的游戲---dice智慧合約

dice智慧合約的操作步驟,在eos的github上有,這裡不再贅述,這裡主要講dice智慧合約的實現。 dice在中文中是骰子。聰明的你已經猜到了,這可能是一個擲骰子游戲,沒錯,這就是一個雙人擲骰子游戲。 現在我們沿著操作步驟看它的實現: 第一步:充

隨機並將結果視覺化

die.py from random import randint class Die(): def __init__(self,num_sides=6): self.num_sides=num_sides def roll(self):

模擬投擲,一至六點出現的次數…

//========================E0408.java========================= public class E0408 { public static void main(String args[]) { int n=Integer.parseInt(arg

python分析游戲

最近學習了點統計學及python知識,試著分析下擲骰子游戲。骰子按標準6面,分析一次投1顆、2顆、3顆、4顆,投擲10、100、1000、10000次時的結果。 使用工具 Jupyter Notebook 分析利器 matplotlib、pyga

Python3初級學習完畢,做一個的小遊戲

  1 import random  2   3 class Game:  4   5     def __init__(self,player1,player2):  6         self.player1=player1  7         self.player

編寫一個100次的程式,打出各種點數的出現次數

<span style="font-size:18px;">int num1=0, num2=0, num3=0, num4=0, num5=0, num6=0; Random random = new Random();

華為機試題——游戲

/*問題描述:   在擲骰子游戲中,會根據所擲數字在地圖中前進幾步,前進完成後需要根據當前地圖位置所示的障礙進行相應操作,其中障礙表示:  1) 9:無障礙  2) 1:停擲一輪,即下輪所擲數字無效; 3) 2:後退兩步,如果已經到起點不再後退; 4) 3:獎勵前進一步 

java游戲聯機版

目前只實現了一個人的客戶端,由服務端進行判斷輸贏,返回結果!人數,可以自行增加! 我使用多執行緒的方式,即每次押注都會通知伺服器端新開執行緒,在參與人數比較少的情況下,不會又問題!但是如果參與人數比較多,由於我的基準值,也就是初始金錢值使用的是同一個靜態變數,必然有可能會造

python.pygal/random學習範例-模擬六面點數次數生成直方圖

from random import randint class Die(): '''表示一個骰子的類''' def __init__(self,num_sides=6): '''骰子認為6面''' self.num_sides=num_sides def rol