Public
Edited
Jul 24, 2020
Importers
2 stars
Insert cell
Insert cell
Insert cell
pachinko(randomBinomial(Math.pow(10, n0), p0))
Insert cell
Insert cell
Insert cell
function randomBinomial(n, p) {
n = +n;
if ((p = +p) >= 1) return () => n;
if (p <= 0) return () => 0;
return function() {
var acc = 0, nn = n, pp = p;
while (nn * pp > 16 && nn * (1 - pp) > 16) {
var i = Math.floor((nn + 1) * pp),
y = randomBeta(i, nn - i + 1)();
if (y <= pp) {
acc += i;
nn -= i;
pp = (pp - y) / (1 - y);
} else {
nn = i - 1;
pp /= y;
}
}
// guard against pp being near-zero
if (1 - pp === 1) return acc;
var sign = pp < 0.5,
pFinal = sign ? pp : 1 - pp,
g = d3r.randomGeometric(pFinal);
for (var s = g(), k = 0; s <= nn; ++k) s += g();
return acc + (sign ? k : nn - k);
}
}
Insert cell
Insert cell
{
const bGen = randomBinomial(1e12, 0.7);
var start = performance.now(),
A = Array.from({length: 100000}, bGen),
end = performance.now();
yield end - start;
}
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more