Python - Создание искаженного дискретного нормального распределения вероятностей для выборки целых чисел - PullRequest
0 голосов
/ 18 февраля 2019

Аналогично следующему вопросу:
Создание случайных чисел с асимметричным распределением вероятностей влево

Указав максимум и дисперсию, я хотел бы выбрать целые числа из некоторого заданного диапазона.

Например, для диапазона - {0,1, ..., 1000} (он же range(1001)) максимальное значение равно 100, поэтому выборочные числа будут наиболее вероятны из диапазона [90-110], менее вероятные числа, которые будут выбраны: [80-89] и [111-120] и т. Д.

1 Ответ

0 голосов
/ 18 февраля 2019

Следующий код сделает это:

import scipy.stats as ss
import numpy as np
import matplotlib.pyplot as plt

center = 100
n = 1001
std = 20
x = np.arange(0, n)
prob = ss.norm.pdf(x,loc=center, scale = std )
prob = prob / prob.sum() #normalize the probabilities so their sum is 1    

nums = np.random.choice(x, 20, p=prob)
nums
...