本题英文原题的描述并不清晰,题面中多次提到“概率”,但并未指明对应的概率空间,以上的译文按题意将其改为了频率的极限,即考察下面的值最大的三个格子X
$$\lim_{n\to\infty}\frac{\text{n轮游戏中玩家落在X格上的次数}}{n}.$$
按规则模拟充分多的轮数(此处模拟100万轮)即可,注意在CH3抽中倒退3格时会落到CC3,此时还会触发一次宝箱卡抽卡。
结果是$101524$。
import random
communityChest=[0,10]+["X"]*14
chanceChest=[0,10,11,24,39,5,"R","R","U",-3]+["X"]*6
communityGrid=[2,17,33]
chanceGrid=[7,22,36]
target=1000000
d=[1,2,3,4]
q=0
t=0
occ=[0 for i in range(40)]
random.shuffle(communityChest)
random.shuffle(chanceChest)
communityCursor=0
chanceCursor=0
for i in range(target):
a=random.choice(d)
b=random.choice(d)
if a==b:
t=t+1
else:
t=0
if t>=3:
q=10
t=0
else:
q=(q+a+b)%40
if q==30:
q=10
if q in chanceGrid:
if chanceChest[chanceCursor]!="X":
if chanceChest[chanceCursor]=="R":
if q>=35 or q < 5:
q=5
elif q>=5 and q < 15:
q=15
elif q>=15 and q < 25:
q=25
elif q>=25 and q < 35:
q=35
elif chanceChest[chanceCursor]=="U":
if q>=12 or q < 28:
q=28
else:
q=12
elif chanceChest[chanceCursor] < 0:
q=q-3
else:
q=chanceChest[chanceCursor]
chanceCursor=(chanceCursor+1)%16
if q in communityGrid:
if communityChest[communityCursor]!="X":
q=communityChest[communityCursor]
communityCursor=(communityCursor+1)%16
occ[q]=occ[q]+1
print sorted([[occ[i],i]for i in range(40)],reverse=True)[:3]
|