假设我有一个列表
[1,2,4]
我定义了最大值z_max = 4
和dz = 0.5
,因此定义了k = z_max/dz = 8
。下方显示间隔的图
所以基本上我的伪代码是这样的:
在第一个间隔(0,1)
中绘制一个随机数r1
在第二个间隔(1,2)
中绘制一个新的随机数r2
在第三个间隔(2,4)
中绘制一个新的随机数r3
使用k
个元素[r1,r1,r2,r2,r3,r3,r3,r3]
我认为您必须首先计算列表中的间隔
list1 = [1,2,4]
list1_diff = np.diff(list1)
#Append first interval missed
print(np.insert(list1_diff,0,1))
[1,1,2]
因此,此列表是列表中的间隔长度。现在,我需要用dz
除以列表中的每个元素,以找出应该绘制并重复一个随机数的次数(k次)。如何使用python列表生成
[r1,r1,r2,r2,r3,r3,r3,r3]
r1
,r2
和r3
是N(0,1)
随机数吗?我想指出正确的方向...我很困。
答案 0 :(得分:0)
这就是我对您的问题的理解:
list1
中将为您提供一个不小于1的整数列表dz
list1
所表示的dz
中相邻整数之间的差返回而整数size_diff
则是size_diff
是您希望看到从result_list
的正态分布中抽取的一个随机数的次数import numpy as np
dz = .5
list1 = [1, 2, 4]
result_list = []
# insert 0 for first interval
list1.insert(0, 0)
for i in range(len(list1)-1):
start = list1[i]
end = list1[i+1]
diff = end - start
size_diff = int(diff / dz)
random_nr = np.random.normal(0, 1)
result_list.extend([random_nr]*size_diff)
print(result_list)
使用风险自负,但我希望这对您有帮助!