1

分布から乱数を生成すると思われる python コードがありますが、生成される乱数CDFは 8 つの異なる値にすぎません。数値の範囲内の任意の値を生成したいと考えていますが、分布で最も頻繁に発生する数値の周りにバイアスがありました。

私のコードは次のとおりです。

import sys
import scipy.stats
import numpy


def CDF_Random(N,NE,E,SE,S,SW,W,NW,Iterations):


    WindDir = (0,45,90,135,180,225,270,315)
    Freq=(N,NE,E,SE,S,SW,W,NW)

    cdf=scipy.stats.rv_discrete(values=(WindDir,Freq))

    cdf_rand=cdf.rvs(size=Iterations)    
    return (cdf_rand)

if __name__ == '__main__':
    N = float(sys.argv[1])
    NE = float(sys.argv[2])
    E = float(sys.argv[3])
    SE = float(sys.argv[4])
    S = float(sys.argv[5])
    SW = float(sys.argv[6])
    W = float(sys.argv[7])
    NW = float(sys.argv[8])
    Iterations = float(sys.argv[9])
    numpy.set_printoptions(threshold=Iterations)
    sys.stdout.write(str(CDF_Random(N,NE,E,SE,S,SW,W,NW,Iterations)))

Cmd Prompt を使用してコードを実行および表示します。次のコマンドを使用します。

python  C:\Users\...\CDF.py 0.01 0.01 0.01 0.01 0.01 0.93 0.01 0.01 10

この結果が返されます

[225 225 225 225 225 225 225 225 225 225]

もっと似たような結果が欲しかった

[220 230 225 222 215 240 220 225 231 235] 

コードをさらに反復して実行すると、0 45 90 などを含む結果が得られます。

ヒストグラムまたは経験的CDFまたはまったく異なるものを使用する必要がありますか

御時間ありがとうございます。

4

0 に答える 0