Bonjour,
J'ai un petit problème qui parait très simple, mais pour lequel j'ai du mal à trouver une solution optimale, qui soit vraiment aléatoire.
Voilà le problème.
Je dispose de 2 données. Appelons la première X, un pourcentage entre 0.00 et 1.00 (2 chiffres significatifs maxi). La deuxième est N, et représente le nombre de fractions que je dois générer.
Je dois donc créer un petit programme informatique qui génère N fractions aléatoires (appelons les a/b) telles que :
a1/b1 + a2/b2 + ... + an/bn = X
avec des a et des b relativement petits (grand max 100)
Jusque là, j'ai trouvé 2 solutions.
Première solution :
1- Je génère aléatoirement tous les a de manière à ce que la somme de mes a soit égale à X*100
2- Je donne la valeur 100 à tous les b
3- Je simplifie les fractions
Problème : pas très aléatoire dans le sens où j'ai beaucoup de fractions sur 100, et je n'ai que peu de valeurs possibles pour b (50, 25, 20, 10, 5, 4 et 2)
Deuxième solution
1- Génération aléatoire de tous les b
2- Trouver le ppcm de tous les b afin de trouver une fraction Y/ppcm qui serait égale à X.
3- Génération aléatoire de tous les a de manière à ce que la somme de ces a soit égale au Y trouvé à l'étape 2. On obtient N fractions avec un dénominateur commun (le ppcm)
4- Simplification des fractions
Problème : Comme la première solution, peu de fractions peuvent être simplifiées. Le seul avantage est que l'on obtient pas que des fractions sur 100...
Une autre idée ?
J'ai pensé que le meilleur moyen d'avoir un résultat aléatoire était de commencer par générer aléatoirement les rapports a/b. Le problème de cette méthode est qu'elle pourrait me donner des a et des b trop grand, puisque rappelez vous qu'il m'en faut des très petits (100 maxi). Et je ne sais pas comment faire pour générer ces rapports de manière à avoir des nombres petits
Merci d'avance
edit : ne prenez pas en compte les situations extrêmes (X = 0.01 et N = 2 par exemple), mais seulement le cas général. Je m'occupe du reste !