我試圖創建一個基本的代碼來模擬股市行爲作爲我的編程課的練習。它基於加權隨機性,並通過pylab顯示。 大多數情況下它看起來不錯,但無論我在那裏運行多少次試驗,似乎都有點不隨機。從每次隨機更新的1-50次,似乎有一個明確的向上趨勢,並不反映在系列的其他任何地方。代碼中其他任何地方的加權值都沒有改變,所以這個趨勢應該是一個畸變,看到我確定給出的結果是大量試驗的平均值。有人會知道我的代碼導致這種情況發生了什麼問題嗎?謝謝!爲什麼我的代碼不是隨機的?
class Simulation(object):
def __init__(self, netPos=300, downChance=.1, downTrend=.06, start = 1285.85, time = 0, recession = False):
self.netPos = netPos
self.downChance = downChance
self.downTrend = downTrend
self.value = start
self.time = time
self.recession = False
def getValue(self):
return self.value
def update(self):
if not self.recession:
if random.random() < self.downTrend:
self.recession = True
if random.random() > self.downChance:
self.value += random.random() * self.netPos
else:
self.value -= random.random() * self.netPos
else:
if random.random() < self.downTrend:
self.recession = False
if random.random() < self.downChance:
self.value += random.random() * self.netPos
else:
self.value -= random.random() * self.netPos
times = 5000
values = []
for i in range(1200):
values += [0]
for x in range(times):
runOnce = Simulation()
for y in range(1200):
values[y] += runOnce.getValue()
runOnce.update()
for i in range(1200):
values[i] = values[i]/times
def plottem(x,y):
pylab.plot(range(1200), values[x:y-1], label="Trend")
pylab.title("Simulated Trend")
pylab.xlabel("Time")
pylab.ylabel("Relative Value")
pylab.legend(loc = 1)
pylab.show()
def getChange(x,y):
print (values[x] - values[y-1])/(x-y-1)
plottem(0,1999)
結果:
歡迎卡羅。對於您需要放置4個領先空間的代碼。欲瞭解更多信息,請看這裏:http://stackoverflow.com/help/formatting – AdrieanKhisbe
「從每個隨機更新的1-50,似乎有一個明確的向上的趨勢,不反映在系列的其他任何地方」 - 它是不完全清楚你想說什麼,但是你的代碼沒有明確地設定一個初始的向上趨勢?有'self.recession'標誌開始False並且只有0.06次翻轉每個更新的機會。 – user2357112
@ user2357112 https://gyazo.com/f0e0e41e9605b4e5a4c64c9e66292416我希望它看起來更多,儘管 –