(New page: <source lang="python"> #!/usr/bin/env python from random import randint A = [0,1,2] def swap(a, src, dst): temp = a[dst] a[dst] = a[src] a[src] = temp def false_randomize(array): ...)
 
(No difference)

Latest revision as of 19:37, 14 February 2009

#!/usr/bin/env python
 
from random import randint
 
A = [0,1,2]
 
 
def swap(a, src, dst):
	temp = a[dst]
	a[dst] = a[src]
	a[src] = temp
 
 
def false_randomize(array):
	a = array[:]
	for i in range(len(a)):
		dest = randint(0, len(a)-1)	# Notice here we take our swap target index with equal probability in the range 0..N
		swap(a, i, dest)
	return a
 
 
def true_randomize(array):
	a = array[:]
	for i in range(len(a)):
		dest = randint(i, len(a)-1)	# Here our destination can only come from i..N
		swap(a, i, dest)
	return a
 
 
 
perms = [[0,1,2], [0,2,1], [1,0,2], [1,2,0], [2,0,1], [2,1,0]]
 
bins_false = [0]*6
bins_true = [0]*6
 
max_iterations = 100000
for i in range(max_iterations):
	bins_false[perms.index(false_randomize(A))] += 1
	bins_true[perms.index(true_randomize(A))] += 1
	if i%1000 == 0:
		print "iteration:", i
 
 
print "False randomize, permutation distribution:", [val/(1.0*max_iterations) for val in bins_false]
print "True randomize, permutation distribution:", [val/(1.0*max_iterations) for val in bins_true]

Alumni Liaison

To all math majors: "Mathematics is a wonderfully rich subject."

Dr. Paul Garrett