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