我正在尝试从数组中随机选择数字。
我可以轻松地通过使用np.random.randint(len(myArray))
来选择一个元素来做到这一点-但这给出了均匀的分布。
对于我的需要,我需要选择一个随机数,在数组的开头附近选择一个数字的可能性更高-因此,我认为像指数概率函数这样的东西更适合。
我是否可以使用指数(或其他非均匀分布)用作数组索引来生成范围为(1,1000)的随机整数?
答案 0 :(得分:2)
您可以从NumPy向MultiPolygon([box(332833.5, 502144.0, 333214.5, 502460.5), box(333537.5, 502144.0, 333918.5, 502460.5)])
模块分配指数概率向量。概率向量之和应为1,因此您可以将所有概率之和归一化。
choice
要确保随机分布遵循指数行为,可以绘制0到1000之间的100000次随机绘制。
import numpy as np
from numpy.random import choice
arr = np.arange(0, 1001)
prob = np.exp(arr/1000) # To avoid a large number
rand_draw = choice(arr, 1, p=prob/sum(prob))