1樓:江流
"""模擬擲骰子"""
import
random
#擲骰子函式
defroll
():rtn
=random
.randint(1
,6)return
rtn#擲N次骰子,返回擲骰子的列表
defroll_dice(n
):roll_list=
if(n>=1):
fork
inrange(n
):roll_a
=roll
()roll_b
=roll
()roll_list.((
roll_a
,roll_b
))#元組儲存投擲結果
return
roll_list
#問題(1),投擲5次骰子,根據和判定勝負defplay_game_1(n
):result_list
=roll_dice(n
)list_a=
list_b=
sum_a=0
sum_b=0
foritem
inresult_list
:#遍歷獲得A、B的投擲結果
list_a.(
item[0
])list_b.(
item[1
])forkin
range
(len
(list_a
)):sum_a
+=list_a[k
]forkin
range
(len
(list_b
)):sum_b
+=list_b[k
('A擲'
+str(n
)+'次骰子,投擲結果是:'
,list_a
('B擲'
+str(n
)+'次骰子,投擲結果是:'
,list_b)if
(sum_a
>sum_b
('比賽結束,A獲得勝利!A的點數之和是:'
+str
(sum_a)+
',B的點數之和是:'
+str
(sum_b)+
'。')
elif
(sum_a
==sum_b
('比賽結束,A、B平局!A、B的點數之和都是:'
+str
(sum_a
))else
('比賽結束,B獲得勝利!A的點數之和是:'
+str
(sum_a)+
',B的點數之和是:'
+str
(sum_b)+
'。')
#問題(2),投擲50次骰子,輸出AB各獲勝了多少次defplay_game_2(n
):result_list
=roll_dice(n
)list_a=
list_b=
win_a_times=0
#A獲勝次數
win_b_times=0
#B獲勝次數
equal_ab=0
#平局次數
foritem
inresult_list
:list_a.(
item[0
])list_b.(
item[1
('A擲'
+str(n
)+'次骰子,投擲結果是:'
,list_a
('B擲'
+str(n
)+'次骰子,投擲結果是:'
,list_b
)#下面截圖列印錯了,列印的也是list_afork
inrange
(len
(list_a
)):if
(list_a[k
]>list_b[k
]):win_a_times+=1
elif
(list_a[k
]==list_b[k
]):equal_ab+=1
else
:win_b_times+=1
('比賽結束,A獲勝的次數是:'
+str
(win_a_times)+
',B獲勝的次數是:'
+str
(win_b_times)+
',雙方打平'
+str
(equal_ab)+
'次。'
)play_game_1(5
)play_game_2(50)
1個骰子連續擲10000次,出現一次以上連續6個6的概率是多少?
林大錘 問題還是寫清楚,你這個情況下如果說是投了連續6個6之後的話重新再算,還是可以連續算6,比如說8個6是算三次啊,還是說重新再開始算,你這個問題需要補充。 Chaser 理論值多少自己算,沒意思。這個問題可以幫老師檢查作業,判斷你有沒有動手擲色子。比如,你可以算一算連續n個一樣數值的概率分布,就...
擲N個骰子N次,點數之和的情況會是怎麼樣的?
Kdsxvh 這是中心極限定理的推論,設有一任意隨機變數X,且n足夠大,則重複做足夠多次後,X1 X2 Xn值的分布服從於正態分佈。概率的峰值在X1 X2 Xn的期望處。10個5面骰子,每個的期望是1 5 1 2 5 3,10個骰子期望就是30,而10又足夠大,所以總點數分布在30周圍,近似地服從正...
一次丟n顆骰子,這n顆骰子面數不同,怎麼快速計算骰子點數和的概率分布?
小戴戴44 動態規劃 記f i,sumi 為扔出前i個骰子和為sumi有多少種可能,有n個骰子,dice i 為第i個骰子有多少面,所有骰子面數總和maxsum,所有骰子面數乘積product 初始化f 1,1 f 1,dice 1 1 用第乙個骰子扔出1到dice 1 的方案數是1 狀態轉移方程為...