使用一点随机性python创建均匀的空间点



我使用的是python 3.8

发件人https://realpython.com/np-linspace-numpy/它涵盖了创建均匀分布的值,但我想添加一些随机性。

假设我有范围(0,10(,并且想要创建3个均匀分布的点(具有随机性(,如果没有随机性,我只需要做np.linspace(0, 10, 3)输出[0, 5, 10],但我希望它像[1.11, 5.66, 9.33][0.33, 5.44, 9.33]等一样展开……两点之间的距离不必精确,但在3个点的情况下,它应该彼此相距20~30%。

感谢

不太确定这是你想要实现的,但你不能从正常的等距点开始,然后添加一些抖动吗?

类似(调整缩放以满足您的需求(:

np.linspace(0, 10, 3) + np.random.normal(size=3, scale=0.5)

我不完全确定你想要实现什么,但我认为这确实符合你的要求,尽管肯定可以改进

r = (0,10) ## range 
num = 4 ## number of values
x = np.linspace(r[0],r[1], num+1)
s = x.shape[0] - 1
y = np.zeros(s)
print(x)
for i in range(s):
low = x[i]
high = x[i+1]*num/(num+1) ## account for spacing 
y[i] = np.random.uniform(low=low, high=high, size=(1,1))

print(y)

输出:

[ 0.   2.5  5.   7.5 10. ]
[0.67724968 3.85532474 5.59241682 7.58428896]

最新更新