January 18, 2023
Как создать гистограмму для заданного распределения вероятности (для функционального тестирования сервера)?
Это быстро и, вероятно, не очень точно, но если вы рассчитаете PDF самостоятельно, то, по крайней мере, облегчите укладку нескольких меньших/больших на одной временной шкале. dev - среднеквадратичное отклонение шума Гуассиана, который управляет шероховатостью. Обратите внимание, что это не "правильный" способ генерировать то, что вы хотите, но это просто.
import math from datetime import datetime, timedelta, date from random import gauss how_many_responses = 1000 start_date = date(2008, 5, 1) end_date = date(2008, 6, 1) num_days = (end_date - start_date).days + 1 timeline = [start_date + timedelta(i) for i in xrange(num_days)] def weibull(x, k, l): return (k / l) * (x / l)**(k-1) * math.e**(-(x/l)**k) dev = 0.1 samples = [i * 1.25/(num_days-1) for i in range(num_days)] probs = [weibull(i, 2, 0.5) for i in samples] noise = [gauss(0, dev) for i in samples] simdata = [max(0., e + n) for (e, n) in zip(probs, noise)] events = [int(p * (how_many_responses / sum(probs))) for p in simdata] histogram = zip(timeline, events) print '\n'.join((d.strftime('%Y-%m-%d ') + "*" * c) for d,c in histogram)