changeset 29:7d6bc790b213

simulation of multi-segment coin flip with bias
author Henry S. Thompson <ht@inf.ed.ac.uk>
date Wed, 28 Jul 2021 17:55:36 +0100
parents bb46148fab91
children 9f40651f6080
files distr_3.py
diffstat 1 files changed, 35 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/distr_3.py	Wed Jul 28 17:55:36 2021 +0100
@@ -0,0 +1,35 @@
+#!/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)]
+
+whole.bell()
+
+