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

PHP & Base de données Discussion :

Fréquence d'un nombre aléatoire [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Angelik
    Profil pro
    Inscrit en
    Août 2006
    Messages
    253
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 253
    Par défaut Fréquence d'un nombre aléatoire
    Bonjour

    Je me posais une petite question à savoir : est-il possible d'attribuer un coefficient de fréquence à un random ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    $code = mt_rand(0,10);
    Avec la fonction ci-dessus, j'aimerais par exemple que :

    0 est 50% de chance d'être affiché
    1 est 45% de chance d'être affiché
    2 est 40% de chance d'être affiché
    3 est 35% de chance d'être affiché
    4 est 30% de chance d'être affiché
    5 est 25% de chance d'être affiché
    6 est 20% de chance d'être affiché
    7 est 15% de chance d'être affiché
    8 est 10% de chance d'être affiché
    9 est 5% de chance d'être affiché
    10 est 1% de chance d'être affiché

    Merci d'avance

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 347
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 347
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par Angelik Voir le message
    Je me posais une petite question à savoir : est-il possible d'attribuer un coefficient de fréquence à un random ?
    Non, à moins de faire ton propre random( ).

    j'aimerais par exemple que :

    0 est 50% de chance d'être affiché
    1 est 45% de chance d'être affiché
    2 est 40% de chance d'être affiché
    3 est 35% de chance d'être affiché
    4 est 30% de chance d'être affiché
    5 est 25% de chance d'être affiché
    6 est 20% de chance d'être affiché
    7 est 15% de chance d'être affiché
    8 est 10% de chance d'être affiché
    9 est 5% de chance d'être affiché
    10 est 1% de chance d'être affiché
    Une solution simple serait de construire un tableau contenant toutes tes valeurs, plus une même valeur apparaîtra dans le tableau et plus elle aura de chance d'être tirée, puis de tirer une valeur au hasard.

    Ceci dit je ne comprends pas dans ton exemple comment 0 pourrait avoir 50% de chances d'être tiré, 1 45% et 2 40% : on dépasse les 100%, mais c'est peut-être parceque je n'ai jamais été très bon en proba

  3. #3
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Bonjour,

    Brutalement je ferrais ainsi mais il y a peut etre de meilleures methodes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $aCoeff = array(0=>50, 1=>45, 2=>40, 3=>35);
     
    foreach ($aCoeff as $nombre=>$coef) {
        $jet = mt_rand();
        $resultat[$nombre] = $coef * $jet;
    }
     
    echo max($resultat);
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  4. #4
    Membre éclairé Avatar de Angelik
    Profil pro
    Inscrit en
    Août 2006
    Messages
    253
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 253
    Par défaut
    Excusez pour le retard

    Le code de "sabotage" respecte une certaine fréquence mais le résultat ne correspond pas à l'intervalle (entre 0 et 10). A la place, j'ai des résultats (l'ensemble étant bizarrement supérieurs à 11) multiplié par 50, 45, 40 ...

    Pour répondre à Seb, je devrai aussi reprendre quelques cours de statistiques ...

    Merci pour le coup de main j'ai saisi l'idée et poste un code prochainement (avec les éléments que j'ai à présent) ++

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    en effet je n'affichais pas le bon resultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo array_search(max($resultat),$resultat);
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre éclairé Avatar de Angelik
    Profil pro
    Inscrit en
    Août 2006
    Messages
    253
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 253
    Par défaut
    Merci sabotage ! le code fonctionne parfaitement. Pour revenir à la méthode, petite précision :
    La ligne ci-dessous génère un tableau dans lequel 0,1,2,3 "apparaissent" respectivement 50,45,40 et 35 fois de telle sorte que nous avons 50(0), 45(1), 40(2) et 35(3)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $aCoeff = array(0=>50, 1=>45, 2=>40, 3=>35);
    En pourcentage, nous avons donc ~29% de chance d'avoir 0 (50/(50+45+40+35)), ~26% de chance d'avoir 1, ~24% de chance d'avoir 2, et ~21% de chance d'avoir 3

    voilou, encore merci

    PS : si quelqu'un à une piste pour ce post

  7. #7
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Ce que fait concretement ce que j'ai ecris : un jet de hasard est fait pour chaque chiffre, ce jet est multiplié par la valeur qu'on a attribué au chiffre.
    Pour la lecture statistique je ne saurais pas confirmer
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. p'tite question de cryptage ( nombre aléatoire )
    Par smyley dans le forum Algorithmes et structures de données
    Réponses: 53
    Dernier message: 08/11/2004, 10h07
  2. Nombres aléatoires
    Par Mat 74 dans le forum Assembleur
    Réponses: 20
    Dernier message: 29/08/2004, 13h31
  3. recherche algo de génération de nombre aléatoire
    Par Pascale38 dans le forum MFC
    Réponses: 2
    Dernier message: 26/01/2004, 14h20
  4. Nombre aléatoire en SQL
    Par sqlnet dans le forum Langage SQL
    Réponses: 8
    Dernier message: 19/08/2003, 12h38
  5. Générer un nombre aléatoire entre 0 et 1 (INCLUS !!!)
    Par haypo dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 22/08/2002, 16h30

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