import random
A = [0,7,8,15,16,23,24,31]
B = [1,2,3,4,5,6,25,26,27,28,29,30,9,14,17,22]
C = [10,11,12,13,14, 18,19,20,21]
def sample_k(k):
ret = []
for _ in range(k):
while True:
# select a group
v = random.random()
if v < .5:
g = A
elif v < .95:
g = B
else:
g = C
# select a num
v = random.choice(g)
if v not in ret[-6:]:
ret.append(v)
break
return ret
print(sample_k(100))
Standard input is empty
[5, 6, 15, 7, 23, 16, 27, 0, 22, 26, 8, 2, 15, 30, 27, 5, 6, 0, 22, 19, 31, 15, 29, 2, 7, 24, 0, 17, 8, 14, 28, 15, 23, 0, 2, 22, 30, 4, 10, 23, 27, 15, 17, 0, 29, 24, 7, 30, 26, 16, 5, 31, 15, 17, 25, 8, 3, 29, 23, 5, 6, 7, 27, 9, 18, 24, 0, 15, 8, 3, 5, 2, 13, 24, 23, 0, 29, 5, 20, 30, 7, 27, 17, 0, 14, 24, 31, 7, 3, 22, 25, 4, 8, 5, 27, 24, 31, 17, 4, 16]