1

私はプログラミングにかなり慣れていないので、簡単な質問があります。星の範囲に対してガウス関数を作成しようとしています。ただし、すべての星のアンダーカーブのサイズを100にしたいです。アンダーカーブの全長が 100 であるという while ループを実行することを考えていました。ただし、エラーが発生し、それがリストであることと関係があると推測しています。ここで私を助けてくれるかどうかを確認するために、私のコードを見せています。ありがとう!

構文エラーが表示されます: 関数呼び出しに代入できません

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 に答える