作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我刚刚从在线发布的麻省理工学院视频讲座中复制了这段代码:(第 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/
我是一名优秀的程序员,十分优秀!