A ideia é fazer um algoritmo que reproduza um sorteio com reposição. Vamos ver o método mais simples que é o do gerador linear. Neste método temos $$ A_{n+1}= \alpha A_n + c \mod m $$ Desta forma a sequência $A_n$ de número inteiros entre $0$ e $m-1$. Esta sequência terá período, no máximo, $m$.
Vamos fazer uns experimentos:
def LCG(m,a,c,seed=0):
return (a*seed+c)%m
# teste 1 m=25 , c=0 , a=6, seed=1
seed=3
for k in range(25):
seed = LCG(25,6,2,seed)
if (seed%2==0):
couk="k"
else: couk="c"
print(" {:d} e resultado {:s}".format(seed,couk))
20 e resultado k 22 e resultado k 9 e resultado c 6 e resultado k 13 e resultado c 5 e resultado c 7 e resultado c 19 e resultado c 16 e resultado k 23 e resultado c 15 e resultado c 17 e resultado c 4 e resultado k 1 e resultado c 8 e resultado k 0 e resultado k 2 e resultado k 14 e resultado k 11 e resultado c 18 e resultado k 10 e resultado k 12 e resultado k 24 e resultado k 21 e resultado c 3 e resultado c
from numpy.random import *
rand(4)
array([ 0.99269082, 0.52590978, 0.25556603, 0.08737639])
rand()
0.4797901571723804