[ create a new paste ] login | about

Link: http://codepad.org/U52eCBCo    [ raw code | output | fork ]

Python, pasted on Oct 15:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import random

# Размер наибольшего интервала одинаковых булевых значений в случайной выборке
def max_HT(N):
	s, max_s, r = 1, 1, random.choice([0,1])
	for x in range(1, N):
		if( r == random.choice([0,1]) ):
			s+= 1
		else:
			s, max_s, r = 1, max( max_s, s), 1-r
	return max( max_s, s)
	
# серия из K экспериментов на последовательности длины N
def test_HT(N, K):
	s = [ 0 for x in range(N+1)]
	for k in range(K):
		s[max_HT(N)] += 1
	return s
	
N = 100
K = 10000
s = test_HT(N, K)
p = 0

for x in range(1, min(30, N+1)):
	p += s[x]
	print x,"\t", s[x],"\t", p,"\t", (p*1.0)/(K*1.0),"\t", 1.0 - (p*1.0)/(K*1.0)


Output:
1 	0 	0 	0.0 	1.0
2 	0 	0 	0.0 	1.0
3 	0 	0 	0.0 	1.0
4 	273 	273 	0.0273 	0.9727
5 	1696 	1969 	0.1969 	0.8031
6 	2598 	4567 	0.4567 	0.5433
7 	2285 	6852 	0.6852 	0.3148
8 	1411 	8263 	0.8263 	0.1737
9 	865 	9128 	0.9128 	0.0872
10 	428 	9556 	0.9556 	0.0444
11 	203 	9759 	0.9759 	0.0241
12 	121 	9880 	0.988 	0.012
13 	64 	9944 	0.9944 	0.0056
14 	28 	9972 	0.9972 	0.0028
15 	16 	9988 	0.9988 	0.0012
16 	10 	9998 	0.9998 	0.0002
17 	2 	10000 	1.0 	0.0
18 	0 	10000 	1.0 	0.0
19 	0 	10000 	1.0 	0.0
20 	0 	10000 	1.0 	0.0
21 	0 	10000 	1.0 	0.0
22 	0 	10000 	1.0 	0.0
23 	0 	10000 	1.0 	0.0
24 	0 	10000 	1.0 	0.0
25 	0 	10000 	1.0 	0.0
26 	0 	10000 	1.0 	0.0
27 	0 	10000 	1.0 	0.0
28 	0 	10000 	1.0 	0.0
29 	0 	10000 	1.0 	0.0


Create a new paste based on this one


Comments: