python - randint() unexpected behavior -
i'm writing python script find out things randomization.
i have following code:
from random import randint 1 = 0 2 = 0 olddiff = 0 diff = 0 sumdiff = 0 avgdiff = 0 headcounter = 0 counter = 0 while (headcounter < 500000): while (counter < 500): x = randint(1,2) if(x==1): 1 += 1 else: 2 += 1 counter+=1 if (one > two): diff = 1 - 2 else: diff = 2 - 1 sumdiff += diff if(diff > olddiff): olddiff = diff headcounter +=1 avgdiff = sumdiff / 500000 print "occurences of 1: %d" % (one) print "occurences of 2: %d" % (two) print "after 500000 calculations, max difference found %d" % (olddiff) print "sum of differences %d" % (sumdiff) print "the average difference %d" % (avgdiff)
i getting unexpected output:
first try:
occurences of 1: 262 occurences of 2: 238 after 500000 calculations, max difference found 24 sum of differences 24000 average difference 24
second try:
occurences of 1: 247 occurences of 2: 253 after 500000 calculations, max difference found 6 sum of differences 3000000 average difference 6
third try:
occurences of 1: 252 occurences of 2: 248 after 500000 calculations, max difference found 4 sum of differences 2000000 average difference 4
etc...
in 50 times i've run it, there's never difference between max difference , average difference. every time current difference.
is there wrong code or expected because of mechanisms behind randint() function?
you never reset counter
in loop, calculated one
, two
values once. other 499999 runs re-use same one
, two
counts, because while (counter < 500)
condition remains false
.
you can see effect in one
, two
counts; add 500.
Comments
Post a Comment