模擬擲骰子實際是抽取(1~6之間的)隨機數問題,涉及random模組,後面版本的資料視覺化主要應用matplotlib.pyplot模組。
1.0:模擬乙個骰子的結果。首先定義roll_dice()函式,從1~6之間隨機抽取乙個整數作為擲骰子的結果。在主函式中定義乙個長度為6的列表(初始值為0),記錄每個點出現的次數。每次擲完骰子都進行判斷,擲出的點數在對應的列表位置上的元素加1。enumerate()函式將列表索引與對應的元素一一對應起來。
"""
模擬擲骰子
1.0:輸出結果為擲骰子的頻數與頻率
"""import random
def roll_dice():
"""模擬擲骰子
:return: 返回乙個1-6之間的隨機數
"""roll = random.randint(1,6)
return roll
def main():
times = 10000
result_list = [0] * 6
for i in range(times):
roll = roll_dice()
for j in range(1,7):
if roll == j:
result_list[j-1] += 1
for k,result in enumerate(result_list):
print ("擲得數字{},次數為{},頻率為{}".format(k+1,result,result/times))
if __name__=="__main__":
main()
2.0:模擬擲兩個骰子的結果。與1.0不同的是,2.0定義兩個列表,乙個記錄點數,乙個記錄點數出現的次數。zip()函式對兩個列表進行組合,以元組的形式輸出,dict(zip())函式將兩個列表的元素以字典的形式輸出。
"""
模擬擲骰子
2.0:模擬擲兩個骰子的結果
"""import random
def roll_dice():
"""模擬擲骰子
:return: 返回乙個1-6之間的隨機數
"""roll = random.randint(1,6)
return roll
def main():
times = 1000
result_list = [0] * 11
roll_list = list(range(2,13))
roll_dict = dict(zip(roll_list,result_list))
for i in range(times):
roll1 = roll_dice()
roll2 = roll_dice()
for j in range(2,13):
if roll1 + roll2 == j:
roll_dict[j] += 1
for k,result in roll_dict.items():
print ("擲得數字{},次數為{},頻率為{}".format(k,result,result/times))
if __name__=="__main__":
main()
3.0:將兩個骰子的結果用散點圖視覺化,這裡要用到matplotlib.python庫。為了便於將兩個骰子的結果分別視覺化,定義連個列表,分別記錄每個骰子的結果。plt.scatter()函式中的引數alpha表示透明度。
"""
模擬擲骰子
3.0:將擲兩個骰子的結果視覺化
"""import random
import matplotlib.pyplot as plt
def roll_dice():
"""模擬擲骰子
:return: 返回乙個1-6之間的隨機數
"""roll = random.randint(1,6)
return roll
def main():
times = 10
result_list = [0] * 11
roll_list = list(range(2,13))
roll_dict = dict(zip(roll_list,result_list))
roll1_result =
roll2_result =
for i in range(times):
roll1 = roll_dice()
roll2 = roll_dice()
for j in range(2,13):
if roll1 + roll2 == j:
roll_dict[j] += 1
for k,result in roll_dict.items():
print ("擲得數字{},次數為{},頻率為{}".format(k,result,result/times))
#資料視覺化
plt.scatter(range(times),roll1_result,alpha=0.5,c="red")
plt.scatter(range(times), roll2_result, alpha=0.5, c="green")
plt.show()
if __name__=="__main__":
main()
4.0:用直方圖視覺化擲骰子的結果。函式中的引數normed=1可將y軸顯示為頻率。
"""
模擬擲骰子
4.0:直方圖視覺化擲骰子結果
"""import random
import matplotlib.pyplot as plt
plt.rcparams["font.sans-serif"] = ["simhei"]
plt.rcparams["axes.unicode_minus"] = false
def roll_dice():
"""模擬擲骰子
:return: 返回乙個1-6之間的隨機數
"""roll = random.randint(1,6)
return roll
def main():
times = 1000
roll_list =
for i in range(times):
roll1 = roll_dice()
roll2 = roll_dice()
plt.hist(roll_list, bins=range(2,14), normed=1,edgecolor="black",linewidth=1)
plt.title ("擲骰子結果")
plt.xlabel("點數")
plt.ylabel("頻率")
plt.show()
if __name__=="__main__":
main()
5.0:涉及科學計算numpy庫。在numpy中的列表可直接相加。
"""
模擬擲骰子
4.0:科學計算
"""import numpy as np
import matplotlib.pyplot as plt
plt.rcparams["font.sans-serif"] = ["simhei"]
plt.rcparams["axes.unicode_minus"] = false
def main():
times = 1000
roll_list =
roll1 = np.random.randint(1,7,size=times)
roll2 = np.random.randint(1,7, size=times)
roll_list = roll1 + roll2
plt.hist(roll_list, bins=range(2,14), normed=1,edgecolor="black",linewidth=1,rwidth=0.8)
plt.title ("擲骰子結果")
tick_labels = ["2點","3點","4點","5點","6點","7點","8點","9點","10點","11點","12點"]
tick_pos = np.arange(2,13)+0.5
plt.xticks(tick_pos, tick_labels)
plt.xlabel("點數")
plt.ylabel("頻率")
plt.show()
if __name__=="__main__":
main()
FPGA模擬擲骰子
每按同乙個按鍵時會隨機得到乙個1 6中的乙個隨機數字,並用數碼管顯示得到的數值。對兩次按鍵得到的數值進行比較,若前者大,則最低兩位led顯示為 亮 滅 後者較大,則最後兩位led顯示狀態改為 滅 亮 本次課程設計的實質是使數碼管隨機顯示乙個數字,以達擲骰子時隨機出數的效果,因此在小組討論並查閱資料後...
使用Pygal模擬擲骰子
將使用python視覺化包pygal來生成可縮放的向量圖形檔案。對於需要在尺寸 不同的螢幕上顯示的圖表,這很有用,因為它們將自動縮放,以適合 者的螢幕。使用pygal來建立直方圖 from random import randint class die 表示乙個骰子的類 def init self,...
leetcode演算法題 擲骰子模擬
動態規劃 dp i j k 表示投擲第i次,點數為j,k表示連續次數狀態轉移 j出現一次的組合數等於上一輪投出非點數j的所有情況和 dp i j 1 sum dp i 1 j 本輪投出連續k次的點數j的數量情況等於上一輪連續投出k 1次的點數j的數量情況 dp i j k dp i 1 j k 1 ...