【发布时间】:2019-03-26 13:58:59
【问题描述】:
我有一个数字数组,比如从 0 到 8,它们可能会在数组中重复出现。 我需要从中选择一个数字,并且一个数字出现的概率应该与它在该数组中出现的次数成正比。
这是原始数组:
([7, 0, 7, 8, 4, 4, 6, 5, 2, 6, 0, 1, 2, 3, 4, 5, 6, 7, 8])
这是包含每个数字在数组中出现的次数的数组:array([ 2., 1., 3., 1., 1., 4., 1., 5., 1.])
这是我尝试以我之前描述的方式获取一个索引(度数)的代码
tot = sum((deg))
n = np.random.uniform(0, tot)
for i in range(len(deg)):
if n < deg[i]:
return i
n = n - deg[i]
return i
我得到一个指数 2,但我不知道这个过程在概率上是否正确。你说什么?
【问题讨论】:
-
random.choice(<original_array>)会根据出现的次数自动加权。 -
random.choices允许您为特定项目分配权重,而不必用重复的值人为地扩大数组。
标签: python random probability