我有一段 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 还是完全不同的东西
谢谢你的时间。