从python中的CDF生成任何随机数

时间:2013-07-12 07:50:22

标签: python numpy statistics scipy

我有一段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还是完全不同的

感谢您的时间。

0 个答案:

没有答案