1

我对编程很陌生,我有一个快速的问题。我正在尝试为一系列恒星制作高斯函数。但是我希望所有星星的下曲线大小都为 100。我正在考虑做一个while循环,说虽然下曲线的总长度为100。但是,我收到一个错误,我猜它与它是一个列表有关。我正在向你们展示我的代码,看看你们是否可以在这里帮助我。谢谢!

我收到语法错误:无法分配给调用函数

import numpy
import random
import math
import matplotlib.pyplot as plt
import matplotlib.mlab as mlab
import scipy
from scipy import stats
from math import sqrt
from numpy import zeros
from numpy import numarray


variance = input("Input variance of the star:")
mean = input("Input mean of the star:")

space=numpy.linspace(-4,1,1000)
sigma = sqrt(variance)

Max = max(mlab.normpdf(space,mean,sigma))
normalized = (mlab.normpdf(space,mean,sigma))/Max


def random_y_pt():
    return random.uniform(0,1)

def random_x_pt():
    return random.uniform(-4,1)

import random

def undercurve(size):
    result = []
    for i in range(0,size):
        y = random_y_pt()
        x = random_x_pt()
        if y < scipy.stats.norm(scale=variance,loc=mean).pdf(x):
            result.append((x))
    return result

size = 1

while len(undercurve(size)) < 100:
     undercurve(size) = undercurve(1)+undercurve(size)
     print undercurve(size)


plt.hist(undercurve(size),bins=20)
plt.show()
4

1 回答 1

1

如果你的错误是这样SyntaxError: can't assign to function call的,那是因为你的线

undercurve(size) = undercurve(1)+undercurve(size)

这是试图将右侧的输出设置为 的值undercurve(size),这是您无法做到的。

听起来您实际上只想查看100返回的列表中的第一个项目undercurve(size)。为此,使用

undercurve(size)[:100]
于 2013-02-19T20:43:21.810 回答