Harvard:Biophysics 101/2007/Notebook:Xiaodi Wu/2007-2-8
From OpenWetWare
Jump to navigationJump to search
The script:
#!/usr/bin/env python from random import * # Generate random strings and tally print "generating randomness...please wait one moment..." tally_H = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] tally_T = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] for i in range(10000): # Generate a string a = ''.join([choice('HT') for n in range(10)]) # Do a tally for i in range(10): # Generate search strings substr_H = ''.join(['H' for n in range(i+1)]) substr_T = ''.join(['T' for n in range(i+1)]) # Do the actual searching pos_H = a.find(substr_H, 0) while not pos_H == -1: tally_H[i] = tally_H[i] + 1 pos_H = a.find(substr_H, pos_H+1) pos_T = a.find(substr_T, 0) while not pos_T == -1: tally_T[i] = tally_T[i] + 1 pos_T = a.find(substr_T, pos_T+1) # Print tally print "and the tally for contiguous heads or tails is:\n" for i, v in enumerate(tally_H): print ''.join(['H' for n in range(i+1)]).rjust(12), print v print '' for i, v in enumerate(tally_T): print ''.join(['T' for n in range(i+1)]).rjust(12), print v print '' # Print summed up results print "and the summed up results are:\n" def add(x, y): return x + y tally = map(add, tally_H, tally_T) for i, v in enumerate(tally): print str(i+1).rjust(11) + ':', print v print '' print '-' * 40 print "Xiaodi Wu, Biophysics 101, 2007-02-08\n"
...and the output...
generating randomness...please wait one moment... and the tally for contiguous heads or tails is: H 49809 HH 22358 HHH 9879 HHHH 4291 HHHHH 1836 HHHHHH 762 HHHHHHH 290 HHHHHHHH 106 HHHHHHHHH 33 HHHHHHHHHH 8 T 50191 TT 22704 TTT 10114 TTTT 4424 TTTTT 1880 TTTTTT 774 TTTTTTT 301 TTTTTTTT 101 TTTTTTTTT 32 TTTTTTTTTT 5 and the summed up results are: 1: 100000 2: 45062 3: 19993 4: 8715 5: 3716 6: 1536 7: 591 8: 207 9: 65 10: 13 ---------------------------------------- Xiaodi Wu, Biophysics 101, 2007-02-08