在我正在运行的模拟中,我必须从相同的beta分布中绘制许多值。目前,我正在使用
return _appointment
.Where(appointment =>
(appointment.startTime < Date.Now) &&
(appointment.startTime.Date == DateTime.Today) &&
(Date.Now - appointment.startTime).TotalMinutes < 30)
.ToList();
但是,这段代码非常慢。我认为这是因为beta分布被反复评估,因为它只能被评估一次,因为它不会在模拟过程中发生变化。有没有办法实现这个目标?
答案 0 :(得分:3)
你可以试试numpy的random.beta。它似乎要快得多:
import random
import numpy as np
n = 10**6
%timeit [random.betavariate(2, 3) for _ in range(n)]
1 loop, best of 3: 3.83 s per loop
%timeit np.random.beta(2, 3, n)
10 loops, best of 3: 99.7 ms per loop