• [^] # Re: générateur congruentiel linéaire ?

    Posté par . En réponse au message Générer un nombre pseudo aléatoire avec garantie d'unicité. Évalué à 3. Dernière modification le 14 février 2012 à 10:05.

    Merci, je crois que tu viens de pointer exactement ce qu'il me faut. Je viens de faire un exemple avec un générateur de nombre aléatoires entre 0 et 99 répondant à mes critères.
    Le code (crade) en python pour ceux que ça pourrait intéresser:

    def X(Xn):
     a = 21
     c = 33
     m = 100
     return (a*Xn+c) % m
    X0 = 52 # Seed
    Xi = X0
    for i in xrange(0,100):
     print str(i)+", "+str(Xi) 
     Xi = X(Xi)
    
    

    Les valeurs choisies:
    m : correspond à ma plage [0..99]
    c : est premier avec m (j'aurais pu choisir n'importe lequel de 3, 7, 9, 11, 13, 17, 19, 21, 23, 27, 29, 31, 33, 37, 39, 41, 43, 47, 49, 51, 53, 57, 59, 61, 63, 67, 69, 71, 73, 77, 79, 81, 83, 87, 89, 91, 93, 97 ou 99)
    a : est défini tel que a-1 est divisible par tout les facteurs premiers de m (m = 2^2+5^2 en l’occurrence) ainsi que si m multiple de 4 (ce qui est le cas ici), alors a est aussi multiple de 4. Je n'ai donc pas le choix ici, a-1 = 2*2*4 = 20 => a = 21

    La graine (X0, Seed) peut être n'importe quel nombre entre 0 et 99.

    Merci beaucoup, mon seul problème est maintenant de trouver un "a" et un "c" correspondant à mon "m" énorme de 2^25...