Simplify binomial approximation example with random.binomialvariate() (gh-113871)

This commit is contained in:
Raymond Hettinger 2024-01-09 13:02:07 -06:00 committed by GitHub
parent 65f8eb7119
commit 2fd2e74793
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 4 additions and 7 deletions

View File

@ -1026,19 +1026,16 @@ probability that the Python room will stay within its capacity limits?
>>> round(NormalDist(mu=n*p, sigma=sqrt(n*p*q)).cdf(k + 0.5), 4)
0.8402
>>> # Solution using the cumulative binomial distribution
>>> # Exact solution using the cumulative binomial distribution
>>> from math import comb, fsum
>>> round(fsum(comb(n, r) * p**r * q**(n-r) for r in range(k+1)), 4)
0.8402
>>> # Approximation using a simulation
>>> from random import seed, choices
>>> from random import seed, binomialvariate
>>> seed(8675309)
>>> def trial():
... return choices(('Python', 'Ruby'), (p, q), k=n).count('Python')
...
>>> mean(trial() <= k for i in range(10_000))
0.8398
>>> mean(binomialvariate(n, p) <= k for i in range(10_000))
0.8406
Naive bayesian classifier