49、假設有一蝸牛在長100寸之旗桿的中間點上做上下移動。其移動之規律依照天候而
變,若為晴天則當天只向下移動1寸,陰天不動,雨天則當天只向上移動1寸,
假設晴天、陰天、雨天出現之機率分別為5/10,3/10,2/10,試設計一程式模擬該
蝸牛之運動,求出50天後該生物所在之位置距離頂點多遠,及移動之總距離。
試模擬5次,印出每次結果並求其平均值。
設 距離頂點Y, 移動總距離S
初始值: Y = 50(因為在旗桿中間點), S = 0
if 晴天, then:
Y = Y + 1
S = S + 1
( 陰天沒移動,Y及S皆無變化)
if 雨天, then:
Y = Y - 1
S = S + 1
用亂數模擬晴天,雨天,陰天:
亂數產生1~10的整數,
1~5表示晴天, 機率5/10
6~8表示陰天, 機率3/10
9~10表示雨天, 機率2/10
初始值: Y = 50(因為在旗桿中間點), S = 0
if 晴天, then:
Y = Y + 1
S = S + 1
( 陰天沒移動,Y及S皆無變化)
if 雨天, then:
Y = Y - 1
S = S + 1
用亂數模擬晴天,雨天,陰天:
亂數產生1~10的整數,
1~5表示晴天, 機率5/10
6~8表示陰天, 機率3/10
9~10表示雨天, 機率2/10
#coding=utf8
import random
#randint(a, b) 可以產生一個介於 a 跟 b 之間的亂數 N (a <= N <= b)。
Sum1=0
Sum2=0
for j in range (1,6):
Y=50
S=0
for i in range (1,51):
a= random.randint(1,10)
# print(a,end=",") for Debug除錯用
if (a<=1 and a<=5):
Y=Y+1
S=S+1
elif (a<=6 and a<=10):
Y=Y-1
S=S+1
print("第",j,"次 : 離頂點",100-Y,"移動總距離",S)
Sum1=Sum1+100-Y
Sum2=Sum2+S
Sum1=Sum1/5
Sum2=Sum2/5
print(" 離頂點 平均值 :-> ",Sum1,"移動平均值 :-> ",Sum2)
#==================
================= RESTART: D:/程式語言 Python 入門/50題/Ex50-49.py =================
第 1 次 : 離頂點 78 移動總距離 34
第 2 次 : 離頂點 73 移動總距離 35
第 3 次 : 離頂點 70 移動總距離 36
第 4 次 : 離頂點 73 移動總距離 29
第 5 次 : 離頂點 66 移動總距離 32
離頂點 平均值 :-> 72.0 移動平均值 :-> 33.2
>>>
================= RESTART: D:/程式語言 Python 入門/50題/Ex50-49.py =================
第 1 次 : 離頂點 70 移動總距離 32
第 2 次 : 離頂點 70 移動總距離 30
第 3 次 : 離頂點 71 移動總距離 31
第 4 次 : 離頂點 71 移動總距離 27
第 5 次 : 離頂點 77 移動總距離 29
離頂點 平均值 :-> 71.8 移動平均值 :-> 29.8
>>>
================= RESTART: D:/程式語言 Python 入門/50題/Ex50-49.py =================
第 1 次 : 離頂點 73 移動總距離 35
第 2 次 : 離頂點 74 移動總距離 32
第 3 次 : 離頂點 72 移動總距離 38
第 4 次 : 離頂點 63 移動總距離 29
第 5 次 : 離頂點 66 移動總距離 30
離頂點 平均值 :-> 69.6 移動平均值 :-> 32.8
>>>
沒有留言:
張貼留言