Я не уверен насчет вашей функции распределения, мне она кажется немного грязной (примечание: (1-0.05) ** (1/100) = (0.95 ** 0.01)), но вы можете использовать систему max-ограниченный как верхняя граница для генерации случайной величины x с использованием random.uniform()
, тогда вы можете вычислить F(x)
, чтобы получить случайное значение, принадлежащее вашему распределению.Это можно сделать следующим образом:
import sys
import math
import random
def F(x):
return 1-(math.exp(-(x + 100*math.log(1-(0.95**0.01)))/1.5))
def get_random_value_from_distribution():
x = random.uniform(-100 * math.log(1- (0.95**0.01)), sys.maxsize)
y = F(x)
return y
print("x1:", get_random_value_from_distribution())
print("x2:", get_random_value_from_distribution())
print("x3:", get_random_value_from_distribution())
Примечание. Ваша функция распределения фиксируется на 1 через определенный интервал, поэтому вам необходимо рассмотреть это: