gpt4 book ai didi

Python麻省理工开放课件股票市场模拟不完整?

转载 作者:行者123 更新时间:2023-11-28 17:54:11 26 4
gpt4 key购买 nike

我刚刚从在线发布的麻省理工学院视频讲座中复制了这段代码:(第 23 课 | 麻省理工学院 6.00 计算机科学与编程导论,2008 年秋季)。因为我不得不从视频讲座中复制它,所以我不确定我是否得到了完整的程序。它不能按原样工作,我可以使用一些指导。

谢谢。

import pylab, random

class Stock(object):
def __init__(self, price, distribution):
self.price = price
self.history = [price]
self.distribution = distribution
self.lastChange = 0

def setPrice(self, price):
self.price = price
self.history.append(price)

def getPrice(self):
return self.price

def makeMove(self, mktBias, mo):
oldPrice = self.price
baseMove = self.distribution() + mktBias
self.price = self.price * (1.0 + baseMove)
if mo:
self.price = self.price + random.gauss(.5, .5)*self.lastChange
if self.price < 0.01:
self.price = 0.0
self.history.append(self.price)
self.lastChange = oldPrice - self.price

def showHistory(self, figNum):
pylab.figure(figNum)
pylab.plot(self.history)
pylab.title('Closing Price, Test ' + str(figNum))
pylab.xlabel('Day')
pylab.ylabel('Price')


def unitTestStock():
def runSim(stks, fig, mo):
for a in stks:
for d in range(numDays):
s.makeMove(bias, mo)
s.showHistory(fig)
mean += s.getPrice()
mean = mean/float(numStks)
pylab.axhline(mean)
numStks = 20
numDays = 200
stks1 = []
stks2 = []
bias = 0.0
mo = False
for i in range(numStks):
volatility = random.uniform(0,0.2)
d1 = lambda: random.uniform(-volatility, volatility)
d2 = lambda: random.gauss(0.0, volatility/2.0)
stks1.append(Stock(100.0, d1))
stks2.append(Stock(100.0, d2))
runSim(stks1, 1, mo)
runSim(stks2, 2, mo)

unitTestStock()
pylab.show()
assert False

class Market(object):
def __init__(self):
self.stks = []
self.bias = 0.0

最佳答案

除了输入错误的变量 s 和遗漏平均赋值外,您还有一个缩进问题。

目前,您已经将 unitTestStock() 定义为 Stock 类的一个属性。这不是您想要的,尤其是因为 unitTestStock 没有 self 参数。要解决您的问题,请合并上述更改,然后缩进函数 unitTestStock() 的整个主体及其后的 3 行。

代码应该是这样的:

class Stock(object):
<...>

def showHistory(self, figNum):
pylab.figure(figNum)
pylab.plot(self.history)
pylab.title('Closing Price, Test ' + str(figNum))
pylab.xlabel('Day')
pylab.ylabel('Price')

def unitTestStock():
def runSim(stks, fig, mo):
mean = 0.0
for s in stks:
for d in range(numDays):
s.makeMove(bias, mo)
s.showHistory(fig)
mean += s.getPrice()
mean = mean/float(numStks)
pylab.axhline(mean)
numStks = 20
numDays = 200
stks1 = []
stks2 = []
bias = 0.0
mo = False
for i in range(numStks):
volatility = random.uniform(0,0.2)
d1 = lambda: random.uniform(-volatility, volatility)
d2 = lambda: random.gauss(0.0, volatility/2.0)
stks1.append(Stock(100.0, d1))
stks2.append(Stock(100.0, d2))
runSim(stks1, 1, mo)
runSim(stks2, 2, mo)

unitTestStock()
pylab.show()
assert False

关于Python麻省理工开放课件股票市场模拟不完整?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3534767/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com