Génération de fractions aléatoires

Réponses à toutes vos questions après le Bac (Fac, Prépa, etc.)
Karmeliet
Messages: 2
Enregistré le: 07 Oct 2012, 15:01

Génération de fractions aléatoires

par Karmeliet » 07 Oct 2012, 15:35

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 !



Avatar de l’utilisateur
fatal_error
Modérateur
Messages: 6610
Enregistré le: 22 Nov 2007, 12:00

par fatal_error » 07 Oct 2012, 19:28

slt,

a et b sont-ils entiers ou peuvent-ils etre à virgule. Peuvent-ils être négatifs?
sinon une idée:
on note
f_1+f_2+...+f_N=X
ou f_i désigne la i-ème fraction.

L'idée c'est de piocher f_1 dans [0;X]. Supposons X=0.7
mettons qu'on a f_1=0.38, on prend après f_2 dans [0;X-f_1=0.32]
et ainsi de suite.

Enfin le calcul de f_N est imposé...

Pour déterminer la valeur de a_i et b_i composant la fraction
on peut imposer 0<a_i<100 et 0<b_i<100 (je les ai supposés positifs)
on cherche a_i et b_i tels que
a_i=b_if_i
on a donc
0<b_if_i<100f_i
or 100f_i<100 donc qqsoit b_i on a b_if_i=a_i<100 c'est à dire qqsoit b_i pioché entre 0 et 100 il existe a_i tel que a_i/b_i = f_i

après il se peut qu'on ait des a_i très petits...genre 0.001, t'auras qu'à simplifier
la vie est une fête :)

Karmeliet
Messages: 2
Enregistré le: 07 Oct 2012, 15:01

par Karmeliet » 07 Oct 2012, 22:19

a et b doivent être des entiers. Pas forcément à la génération hein, ce qui compte c'est le résultat final. J'étudie ta solution demain, là il est un peu tard pour mon cerveau :lol3:

Que des valeurs entières et positives inférieures à 100 pour résumer.

 

Retourner vers ✯✎ Supérieur

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 34 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite