Géométriquement le forum Dlz9
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.

Aller en bas
Dlzlogic
Dlzlogic
Admin
Messages : 10451
Date d'inscription : 26/04/2019
Age : 80
Localisation : Proville
http://www.dlzlogic.com

Fabrication d'une liste.  Empty Fabrication d'une liste.

Mar 14 Avr - 18:54
Bonsoir,
Réf. : http://www.les-mathematiques.net/phorum/read.php?15,1979608
Je recopie l'énoncé :

Comment créériez-vous algorithmiquement parlant n+1 réels a0,a1,…,an∈[0,1] de somme 1 et tels que k=0nkak=mm est fixé à l'avance ? Le tout le plus uniformément possible, même si ceci n'a peut être pas grand sens.
D'abord je créerais une liste a0 ...an de moyenne 1/n, aléatoirement.
je rectifieras certaines valeurs de a pour obtenir une somme = 1. Par exemple en majorant (resp. minorant) les n-1 nombre a, c'est à dire sauf les extrêmes qui pourraient valoir 0 ou 1.
Puis je l'ordonnerais dans le sens croissant, ou décroissant ? Si m est grand, ce sera dans le sens croissant, décroissant, dans le cas contraire.
Je ferais la somme de kak et je la comparerais à m.
En supposant que soit possible, en effet, la valeur de m ne peut être que dans certains limites (à calculer en fonction de n), je rechercherais deux variables ai et aj à échanger, éventuellement plusieurs fois pour améliorer la précision.
De toute façon l'égalité avec m ne me semble pas possible, puisqu'il s'agit de réels.
Il y a un petit calcul pour trouver le couple à échanger le plus vite possible.
Amusant.
Dlzlogic
Dlzlogic
Admin
Messages : 10451
Date d'inscription : 26/04/2019
Age : 80
Localisation : Proville
http://www.dlzlogic.com

Fabrication d'une liste.  Empty Re: Fabrication d'une liste.

Jeu 16 Avr - 15:46
Bonjour,
C'est assez amusant à faire.
Mais c'est pas simple.
Je suis parti de l'hypothèse de tirer n nombres entre 0 et 1 avec mon générateur. Comme tous les générateurs sérieux la liste suit la répartition de la loi normale. Cela a pour effet que pour obtenir une somme égale à 1 il faut prendre des nombres entre 0 et 1/(n/2) pour éviter d'avoir trop de correction.
Autre problème, les différents essais montrent que la somme k.ak varient très peu pour un même n donné. Autrement dit les valeurs n et m me semblent assez liées.
En tout cas, la méthode que j'ai décrite fonctionne correctement. J'ai juste fait une faute ici :"Par exemple en majorant (resp. minorant) les n-1 nombre a, c'est à dire sauf les extrêmes qui pourraient valoir 0 ou 1. " 
C'est un bon exercice de programmation.
Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum