Ok, mais imaginons que j'ai en entrée X = 0.75.
Au premier coup, je trouve a = 25 par exemple. Il faut que B soit au minimum de 34 (a/X) pour que a/b soit inférieur à X. Or, uniforme(0,a*m) donne un nombre compris entre 0 et 18, non ? J'aurais donc plutôt tendance à dire b = uniforme(0,a*m)+(a/m), sachant que m = X si on parle de la première génération, et sachant que je ne sais pas ce que a*m fait là ^^. Ce qui donne, dans mon exemple, un nombre compris entre 34 et 52.
Bref, ta piste est bonne, et j'ai codé ta solution avec a = uniforme(0,15) et b = uniforme(0,100)+(a/m) et j'obtiens des résultats assez corrects avec N=8, mais peut-être un peu trop de valeurs extrêmes avec des N petits (2,3) ou grands (20,25), c'est-à-dire des rapports pas très homogènes (plusieurs 1% ou 2% à côté d'un seul 60% par exemple, avec X = 75%). Pas vraiment obligé d'avoir des résultats homogènes donc je peux m'en contenter, mais ce serait un plus de pouvoir avoir, de temps à autre, des résultats homogènes.
Qu'en penses-tu ?
PS : je code en C++
Message édité par ghuillaume le 08-10-2012 à 01:51:46