IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langages de programmation Discussion :

pb de moyenne


Sujet :

Langages de programmation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 43
    Par défaut pb de moyenne
    Bonjour,

    j'ai un soucis, je ne sais pas comment faire (de manière la plus simple possibles, et la plus rapide possible) ceci =>

    Obtenir une valeur aléatoire entre a et b, mais je dois également obtenir une moyenne des valeurs retournées.

    exemple : obtenir une valeur entre 1 et 30, dont la moyenne est 10

  2. #2
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    La valeur de ta moyenne est une des données d'entrée, ou tu veux "seulement" calculer la moyenne finale, peu importe les données ?

    Formulé autrement : tu cherches à générer N nombres entre 1 et 30, et en avoir la moyenne, ou à générer N nombres entre 1 et 30 dont la moyenne sera 10 ?
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 43
    Par défaut
    la moyenne est un nombre que je dois obtenir, cad, qu'elle est imposé.

    les paramétres sont :

    moyenne à obtenir
    liste de valeur possible (dans mon cas de 1 jusqu'à 30)

    + clairement

    générer N nombres entre 1 et 30 dont la moyenne sera 10

  4. #4
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    C'est plus un problème d'algo que de code, ça...

    Si tu dois générer N nombres Gi entre 1 et 30, et obtenir une moyenne de M, alors on a :
    • Quel que soit i, 1 <= Gi <= 30.
    • 1 <= i <= N
    • Somme(Gi)[1<=i<=N] = N x M => Moyenne(Gi) = (N x M) / N = M, ce qui est demandé.


    Il te reste donc à générer N nombres dont la somme sera (N x M). Pour le reste, t'as l'idée principale, mais par contre je ne te ferais pas ton exercice à ta place...
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 43
    Par défaut
    je ne saisi p-e pas, mais je ne vois pas en quoi ton explication me fais avancé =>

    • Quel que soit i, 1 <= Gi <= 30.

    • 1 <= i <= N

    • Somme(Gi) = N x M => Moyenne(Gi) = (N x 10) / N = 10


    N étant un nombre de tirage
    10 étant ma moyenne voulu

    Mon Pb s'est comment obtenir : Somme(Gi)

    ma toute 1er idée était de remplir un tableau de plusieurs milliers de données que je remplissait par défaut par au moins une valeur de nombre possible, et ensuite j'avais une boucle qui finissait de me rempllir ce tableau avec des valeurs qui me permettait de rappprocher la somme des valeurs de ce tableau de ma moyenne.

    Le pb c que cette soluce est beaucoup trop longue à s'exécuter.

  6. #6
    Expert confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    6 814
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 6 814
    Par défaut
    C'est purement mathématique, comme problème.....

    comme Random donne un chiffre entre zéro et un, il te faut une fonction F(x) telle que :

    F(0) = 1
    F(1) = 30
    intégrale(0 à 1)F(x) = 10

    si on prend une fonction polynomiale(une exponentielle serait plus élégante, mais j'ai oublié comment ça marche), on a :

    F(x) = 1 + ax + bx²
    intégrale(0 à 1)(1+ax+bx²) = 1 + a/2 + b/3

    donc :

    a+b = 29
    a/2 + b/3 = 9

    a = 29 - b

    (29-b)/2 + b/3 = 9
    on multiplie tout par 6
    81 - 3b + 2b = 54
    81-b = 54
    b = 27
    donc a = 2

    en prenant ton random entre zéro et un, tu dois calculer

    nombre final = 1 + 2* random + 27* square(random)

    *-------------------------------------------------------------------*

    évidemment, si il te faut des entiers, le calcul est plus complexe. Pour des réels, la formule ci-dessus correspond à ton besoin. D'autres formules(exponentielles, par exemple, ou polynômes plus complexes), donneront des résultats proches, mais pas identiques. Donc, ton problème a plusieurs solutions mathématiques qui n'offrent pourtant pas exactement le même profil de distribution aléatoire.

  7. #7
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Citation Envoyé par alex2205 Voir le message
    Mon Pb s'est comment obtenir : Somme(Gi)
    C'est pourtant simple : à chaque tirage aléatoire (entre 1 et 30, donc), tu obtiens une somme partielle, vu que i<N : OK ?
    Cette somme, tu peux savoir à priori si elle "dérive" ou pas de l'objectif final.

    Prenons un exemple concret, avec une moyenne de 1 : est-il possible d'avoir une moyenne de 1 avec N tirages réellement aléatoires entre 1 et 30 ? Non, car la seule solution est de ne tirer QUE des 1. Pareil pour une moyenne à 30, d'ailleurs : tu ne dois tirer que des 30.
    Par contre, pour une moyenne à 10 avec 10 tirages, tu as des solutions "triviales" et des solutions plus complexes. Par exemple, la série de 10 nombres valant 10 chacun est UNE solution.
    Une autre est le tirage (1,2,3,4,5,6,8,12,29,30), dont la somme fait aussi 100 (et donc, la moyenne est bien 10).

    Donc, ta fonction de génération aléatoire doit te sortir des nombres entre 1 et 30, c'est une hypothèse de départ. Sauf que tu dois restreindre ton tirage en fonction de la somme partielle en cours, et dans le cas limite, tu vas carrément imposer le nombre à tirer (tirer un nombre entre 30 et 30, t'as pas vraiment le choix du nombre en fait...).

    Pour faire ça, tu as le choix entre chercher les bons intervalles de génération des notes (imposer la convergence de la suite), ou corriger les tirages déjà effectués. Dans les deux cas, c'est bien plus simple de raisonner sur la somme que de raisonner sur la moyenne, qui n'est qu'une manière de brouiller l'énoncé. Après, tu n'as plus qu'à choisir l'algo que tu souhaites implémenter et nous le poster ici.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

Discussions similaires

  1. Comment peut-on dire : une bdd est petite, moyenne ou grosse
    Par Pierrinot dans le forum Décisions SGBD
    Réponses: 5
    Dernier message: 20/10/2004, 08h40
  2. Requete moyennes mensuelles
    Par bdkiller dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 03/09/2004, 10h43
  3. probleme de moyenne
    Par prez dans le forum Langage SQL
    Réponses: 2
    Dernier message: 25/08/2004, 17h38
  4. [SGBD] Pour moyenne base avec SQL ?
    Par PyRoFlo dans le forum Bases de données
    Réponses: 10
    Dernier message: 13/03/2004, 18h54
  5. Réponses: 3
    Dernier message: 18/05/2003, 00h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo