Je suppose que vous stockez les fréquences comme nombres à virgule flottante compris entre 0 et 1 que le total pour faire 1.
D'abord, vous devez préparer une table de fréquences cumulées, soit la somme de la fréquence de cette lettre et toutes les lettres dont elle est saisie.
Pour simplifier, si vous commencez avec cette distribution de fréquence:
A 0.1
B 0.3
C 0.4
D 0.2
Votre table de fréquence cumulée serait la suivante:
A 0.1
B 0.4 (= 0.1 + 0.3)
C 0.8 (= 0.1 + 0.3 + 0.4)
D 1.0 (= 0.1 + 0.3 + 0.4 + 0.2)
Maintenant générer un nombre aléatoire entre 0 et 1 et voir où dans cette liste ce nombre est. Choisissez la lettre qui a la plus petite fréquence cumulée plus grande que votre nombre aléatoire. Quelques exemples:
Dites que vous choisissez au hasard 0,612. Cela se situe entre 0,4 et 0,8, soit entre B et C, de sorte que vous choisirait C.
Si votre numéro aléatoire était 0,039, qui vient avant 0,1, soit avant A, afin de choisir A.
J'espère que le bon sens, sinon ne hésitez pas à demander des éclaircissements!