Случайная геометрия c распределение по номерам - PullRequest
1 голос
/ 07 февраля 2020

Я хотел бы знать, возможно ли генерировать случайные числа в соответствии с распределением геометрии c, но в пределах списка чисел.

Предположим, у меня есть список, такой как:

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)

Но как я могу рисовать только из указанного c списка чисел?

1 Ответ

1 голос
/ 11 февраля 2020

Ну, я бы назвал это невозможным, Геометрия c Распределение несвязано.

Вы можете сделать что-то вроде

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)
...