I am trying to generate a random sequence of numbers, with each "result" having a chance of {a}48.6%/{b}48.6%/{c}2.8%. Counting how many times in a sequence of 6 or more {a} occurred, same for {b}. {c} counts as neutral, meaning that if an {a} sequence is happening, {c} will count as {a} , additionally if a {b} sequence is happening, then {c} will count as {b}.
The thing is that the results seem right, but every "i" iteration seems to give results that are "weighted" either on the {a} side or the {b} side. And i cant seem to figure out why. I would expect for example to have a result of : {a:6, b:7, a:8, a:7, b:9} but what i am getting is {a:7, a:9, a:6, a:8} OR {b:7, b:8, b:6} etc. Any ideas?
import sys
import random
from random import seed
from random import randint
from datetime import datetime
import time
loopRange = 8
flips = 500
median = 0
for j in range(loopRange):
random.seed(datetime.now())
sequenceArray = []
maxN = 0
count = 0
max1 = 0
max2 = 0
max3 = 0
flag1 = -1
flag2 = -1
for i in range(flips):
number = randint(1, 1000)
if(number <= 486):
max1 += 1
count += 1
flag1 = 0
sequenceArray.append(number)
elif(number > 486 and number <= 972):
max2 += 1
count += 1
flag1 = 1
sequenceArray.append(number)
elif(number > 972):
max3 += 1
count += 1
sequenceArray.append(number)
if(flag1 != -1 and flag2 == -1):
flag2 = flag1
if(flag1 != flag2):
count -= 1
if(count > maxN):
maxN = count
sequenceArray.pop()
if(len(sequenceArray) >= 6):
print(len(sequenceArray))
print(sequenceArray)
# print(sequenceArray)
sequenceArray = []
count = 0
median += maxN
print("Maximum sequence is %d " % maxN)
print("\n")
time.sleep(random.uniform(0.1, 1))
median = float(median/loopRange)
print("\n")
print(median)
Aucun commentaire:
Enregistrer un commentaire