Mercurial > hg > python
view distr_3.py @ 66:53c37a02d471
working, I think/hope
author | Henry S. Thompson <ht@inf.ed.ac.uk> |
---|---|
date | Thu, 14 Dec 2023 20:17:48 +0000 |
parents | 1252f8100c6a |
children |
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)] print(whole[1],whole.mean(), whole.sd(),sep='\t') print() for s in segs: print(s[1],s.mean(), s.sd(),sep='\t') exit() whole.bell(block=False) segs[4].bell()