跨数字的随机几何分布
Random geometric distribution across numbers
我想知道是否可以生成遵循几何分布但位于数字列表内的随机数。
假设我有一个列表,例如:
a = [2, 2.5, 3, 3.5, 4, 4.5, 5, 5.5, 6]
我想随机生成 81 个值,保持 p 值为 .3。
我尝试使用以下内容:
z = np.random.geometric(p=0.3, size=81)
但是我怎样才能只从特定的数字列表中抽取呢?
好吧,我认为这是不可能的,Geometric distribution 是未绑定的。
你可以做类似
import numpy as np
p = 0.3
a = [2, 2.5, 3, 3.5, 4, 4.5, 5, 5.5, 6]
q = np.random.geometric(p, size = 81) - 1
t = [a[k] for k in q]
print(t)
但有时会抛出IndexError异常
您可能会考虑给索引设置上限并自己建立概率,按照
# build normalized geometric-like probabilities
prb = np.asarray([p*(1.0-p)**k for k in range(0, len(a))])
prb /= np.sum(prb)
result = np.random.choice(a, size=81, replace = True, p=prb)
print(result)
我想知道是否可以生成遵循几何分布但位于数字列表内的随机数。
假设我有一个列表,例如:
a = [2, 2.5, 3, 3.5, 4, 4.5, 5, 5.5, 6]
我想随机生成 81 个值,保持 p 值为 .3。
我尝试使用以下内容:
z = np.random.geometric(p=0.3, size=81)
但是我怎样才能只从特定的数字列表中抽取呢?
好吧,我认为这是不可能的,Geometric distribution 是未绑定的。
你可以做类似
import numpy as np
p = 0.3
a = [2, 2.5, 3, 3.5, 4, 4.5, 5, 5.5, 6]
q = np.random.geometric(p, size = 81) - 1
t = [a[k] for k in q]
print(t)
但有时会抛出IndexError异常
您可能会考虑给索引设置上限并自己建立概率,按照
# build normalized geometric-like probabilities
prb = np.asarray([p*(1.0-p)**k for k in range(0, len(a))])
prb /= np.sum(prb)
result = np.random.choice(a, size=81, replace = True, p=prb)
print(result)