我有以下函数来计算两个不同的东西:
def LCM(X0, a, c, m, n): #Generates "n" numbers of random numbers# with given parameters.
X = []
X.append(X0)
for i in range(n):
X.append(float((a*X[i]+c) % m))
X[i] = X[i]/m
del X[0]
X[n-1] = X[n-1]/m
plt.hist(X)
plt.title("LCM Frequency Histogram")
plt.show()
print "For this example, the LCM generated a good quality uniform distribution."
print "However, it should be also noted that every 2000 generations,"
print "the numbers are repeated."
return X[:10] #Show only the first 10 values of the list.
def exponential(lambdavalue):
Z =[]
for i in range(10000):
Z.append(float(-(1/lambdavalue)*math.log(1-X[i])))
plt.hist(Z)
plt.title("Exponential Frequency Histogram")
plt.show()
return Z[:10] #Show only the first 10 values of the list.
在第一个函数中,我计算变量X
,然后在第二个函数中找到基于X的Z
并绘制其直方图。我无法理解如何将变量X
传递给第二个函数。我正在运行以下第一个函数:
LCM(27, 17, 9, 10000, 10000)
这是第二次:
exponential(10)
我也知道我可以使用一些软件包来制作这些东西(LCM随机生成和exp分发),但是,我想做一些练习。
答案 0 :(得分:4)
由于您从第一个函数返回X值,您可以将它们传递给第二个函数,如下所示:
X = LCM(27, 17, 9, 10000, 10000)
Z = exponential(X, 10)
您只需要为exponential
添加一个参数来获取X值。
答案 1 :(得分:0)
您需要将从LCM函数返回的值传递给变量,以便执行 -
x = lcm(27, 17, 9, 10000, 10000)
然后将x的值作为参数传递给指数函数 -
x = exponential(10)
另一种方法是你可以在你的函数之外声明一个全局变量X = [],你可以在两个函数中使用它们。没有把它作为第二个论点。
答案 2 :(得分:0)
您可以在其他函数中使用全局变量,方法是在分配给它的每个函数中将其声明为全局变量:
/:category
并期望1.相反,您需要声明您打算使用全局x:
x = 0
def f():
x = 1
f()
print x #=>0
我希望它会对你有所帮助。或者至少让你更接近解决方案。