Mercurial > hg > python
view distr_3.py @ 30:9f40651f6080
works, but not quite right for cc simulation
author | Henry S. Thompson <ht@inf.ed.ac.uk> |
---|---|
date | Thu, 29 Jul 2021 10:21:51 +0100 |
parents | 7d6bc790b213 |
children | 1252f8100c6a |
line wrap: on
line source
#!/usr/bin/python3 '''Simulate stats for showing segments are the same as the whole''' # Simulate normal distributions of coin flips with slightly # unfair coins # Usage: distr_3.py segsize flipcount nsegs max-bias # Requires python3.6 as of 2021-07-28 # Runs nsegs*segsize experiments, each involving flipcount flips. # Experiments in a given segment have a bias around 0.5, # randomly chosen between 0 and max-bias (which must be < 0.5 import sys, random, signif from nltk import FreqDist n=int(sys.argv[1]) m=int(sys.argv[2]) ss=int(sys.argv[3]) b=float(sys.argv[4]) whole=FreqDist() def fd(n,m,bias): global whole f=FreqDist() split=random.uniform(0.5-bias,0.5+bias) for i in range(n): res=sum(int(random.uniform(0,1)>split) for j in range(m)) f[res]+=1 whole[res]+=1 return f segs=[fd(n,m,b) for s in range(ss)] for s in segs: print("%6.3g %6.3g"%(s.mean(), s.sd())) whole.bell(block=False) segs[4].bell()