Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 18 sur 18
  1. #1
    Invité de passage
    Inscrit en
    juillet 2005
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : juillet 2005
    Messages : 1
    Points : 0
    Points
    0

    Par défaut Afficher des numéros de 1 à 49 de façon aléatoire ?

    Comment écrire un programme en Pascal qui affiche des numéros de 1 à 49 de façon aléatoire ? Je voudrais utiliser ce programme pour jouer au Loto. Merci

  2. #2
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    avril 2002
    Messages
    2 328
    Détails du profil
    Informations personnelles :
    Âge : 29

    Informations forums :
    Inscription : avril 2002
    Messages : 2 328
    Points : 3 401
    Points
    3 401

    Par défaut

    Random ?
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

  3. #3
    Rédacteur
    Avatar de darrylsite
    Inscrit en
    juillet 2007
    Messages
    1 300
    Détails du profil
    Informations forums :
    Inscription : juillet 2007
    Messages : 1 300
    Points : 1 973
    Points
    1 973

    Par défaut

    Citation Envoyé par wormful_sickfoot Voir le message
    Random ?
    enfin, il existe dejà en pascal une fonction random qui permet de generer des nombre aléatoire. cette fonction est random.
    random(num) fournit un nombre compris entre 0 et num-1.
    Ainsi, pour pour avoir des nombres compris entre 1 et 49 il te suffit de faire
    Code :
    1
    2
     
    resultat:=1+random(49);

  4. #4
    Invité de passage
    Inscrit en
    novembre 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : novembre 2008
    Messages : 2
    Points : 2
    Points
    2

    Par défaut

    Et il ne faut pas oublier le randomize, sans lui, les mêmes chiffres reviennent tout le temps =(

  5. #5
    Membre éprouvé Avatar de vg-matrix
    Inscrit en
    février 2007
    Messages
    1 215
    Détails du profil
    Informations personnelles :
    Âge : 25

    Informations forums :
    Inscription : février 2007
    Messages : 1 215
    Points : 470
    Points
    470

    Par défaut

    Code :
    1
    2
    Randomize;
    result := 1 + random(49);
    Il est difficile de retrouver ses erreurs lorsqu'on est persuadé que son code est juste...

    Groupe des développeurs ivoiriens

  6. #6
    Nouveau Membre du Club
    Inscrit en
    mai 2008
    Messages
    87
    Détails du profil
    Informations forums :
    Inscription : mai 2008
    Messages : 87
    Points : 39
    Points
    39

    Par défaut

    Citation Envoyé par -pH+- Voir le message
    Et il ne faut pas oublier le randomize, sans lui, les mêmes chiffres reviennent tout le temps =(
    j'ai essayé random sans randomize dans une boucle et j'ai des chiffres différents !

  7. #7
    Membre expérimenté
    Avatar de diden138
    Développeur Web
    Inscrit en
    mai 2006
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 25

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : mai 2006
    Messages : 713
    Points : 508
    Points
    508

    Par défaut Re

    Citation Envoyé par paskal++ Voir le message
    j'ai essayé random sans randomize dans une boucle et j'ai des chiffres différents !
    Disons que ce n'est pas obligatoire mais pour obtenir du "bon" hasard il faut le mettre
    Cordialement,
    et vint le 20siècle et l'homme se mit à réflechir comme la machine auteur: diden138
    Langage: Pascal,OCaml,Delphi,c/c++.
    Langages web:Xhtml,Css,Php/Mysql,Javascript,Actionscript 2.0
    Plate forme:Windows XP Pro SP2./Red Hat 9.0/SUSE 10.2
    Config :Intel P4 3.2GHZ,2MO cach,512 RAM.
    Outils:Tp7,objective caml,Delphi 6 perso, C++builder 6,Visual C++ Express edition sous win,code-block sous linux(Ubuntu) .

  8. #8
    Expert Confirmé
    Avatar de krachik
    Inscrit en
    décembre 2004
    Messages
    1 964
    Détails du profil
    Informations forums :
    Inscription : décembre 2004
    Messages : 1 964
    Points : 3 758
    Points
    3 758

    Par défaut

    Bonjour
    Citation Envoyé par paskal++ Voir le message
    j'ai essayé random sans randomize dans une boucle et j'ai des chiffres différents !
    Citation Envoyé par diden138 Voir le message
    Disons que ce n'est pas obligatoire mais pour obtenir du "bon" hasard il faut le mettre
    Cordialement,
    Executez une fois un code pareil dans une boucle sans randomize ça vous renvera des nombres différents mais exécutez plusieurs fois vous verez si la suite de nombres change ou pas
    L'aide en ligne de Pascal est clair

    Cordialement
    Je suis ce que je suis grâce à ce que nous sommes tous Humanité aux Humains!! !

    Entre ce que je pense, ce que je veux dire, ce que je crois dire, ce que je dis ce que vous avez envie d'entendre, ce que vous croyez entendre, ce que vous entendez, ce que vous avez envie de comprendre, ce que vous comprenez ... Il y a dix possibilités que nous ayons des difficultés à communiquer. Mais essayons quand meme ....... E. Wells

  9. #9
    Expert Confirmé Sénior
    Inscrit en
    août 2006
    Messages
    3 544
    Détails du profil
    Informations forums :
    Inscription : août 2006
    Messages : 3 544
    Points : 4 044
    Points
    4 044

    Par défaut

    Gea,
    Citation Envoyé par paskal++ Voir le message
    j'ai essayé random sans randomize dans une boucle et j'ai des chiffres différents !
    Voir les réponses précédentes, et j'ajoute : il FAUT le mettre, regarde l'aide de ton compilateur, ou n'importe quel cours/tuto/bouquin sur Pascal (même probablement les plus mauvais).

    Ça fait partie de l'utilisation de la fonction random. Point.
    Il court en ce moment une espèce de grippe, mais elle ne court pas très vite, car on peut l'attraper sans courir.

  10. #10
    Membre expérimenté
    Avatar de diden138
    Développeur Web
    Inscrit en
    mai 2006
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 25

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : mai 2006
    Messages : 713
    Points : 508
    Points
    508

    Par défaut Bonjour

    Citation Envoyé par krachik Voir le message
    Bonjour




    Executez une fois un code pareil dans une boucle sans randomize ça vous renvera des nombres différents mais exécutez plusieurs fois vous verez si la suite de nombres change ou pas
    L'aide en ligne de Pascal est clair

    Cordialement
    ça donnera deux numéro différents
    j'ajouterais aussi ça tiré du cours du Hugo ETIEVANT
    Avant l'utilisation des fonctions qui vont suivre, il faut initialiser le généraleur aléatoire (tout comme il faut initialiser la carte graphique pour faire des dessins) avec la procédure Randomize. Cette initialisation est indispensable pour être sûr d'obtenir un relativement "bon hasard" bien que ce ne soit pas obligatoire.

    j'ajournerais encore une chose si on met pas de randomize on aura les même valeurs si on exécute le programme plusieurs fois mais pas dans le programme lui même j'explique exemple:
    Code :
    1
    2
    3
     
    writeln(1+random(49));
    writeln(1+random(49));
    lors qu'on exécute ce programme on aura par exemple 25 et 30 mais pas le même chiffre 30 et 30.
    par contre si on réexecute notre programme une 2éme fois on aura le même résultat
    Cordialement,
    et vint le 20siècle et l'homme se mit à réflechir comme la machine auteur: diden138
    Langage: Pascal,OCaml,Delphi,c/c++.
    Langages web:Xhtml,Css,Php/Mysql,Javascript,Actionscript 2.0
    Plate forme:Windows XP Pro SP2./Red Hat 9.0/SUSE 10.2
    Config :Intel P4 3.2GHZ,2MO cach,512 RAM.
    Outils:Tp7,objective caml,Delphi 6 perso, C++builder 6,Visual C++ Express edition sous win,code-block sous linux(Ubuntu) .

  11. #11
    Expert Confirmé
    Avatar de krachik
    Inscrit en
    décembre 2004
    Messages
    1 964
    Détails du profil
    Informations forums :
    Inscription : décembre 2004
    Messages : 1 964
    Points : 3 758
    Points
    3 758

    Par défaut

    Citation Envoyé par diden138 Voir le message
    ça donnera deux numéro différents
    j'ajouterais aussi ça tiré du cours du Hugo ETIEVANT

    Cordialement,
    J'insiste, éxecutes plusieurs fois a la suite ce code
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    uses crt;
    const max=5;
    var i:byte;
    begin
      clrscr;
      for i:=1 to max do
         writeln(random(50)+1);
      readln;
    end.
    Et dis moi si la série des 5 nombres change à chaque éxecution
    L'aide de Pascal n'est pas clair?
    Je suis ce que je suis grâce à ce que nous sommes tous Humanité aux Humains!! !

    Entre ce que je pense, ce que je veux dire, ce que je crois dire, ce que je dis ce que vous avez envie d'entendre, ce que vous croyez entendre, ce que vous entendez, ce que vous avez envie de comprendre, ce que vous comprenez ... Il y a dix possibilités que nous ayons des difficultés à communiquer. Mais essayons quand meme ....... E. Wells

  12. #12
    Expert Confirmé
    Avatar de krachik
    Inscrit en
    décembre 2004
    Messages
    1 964
    Détails du profil
    Informations forums :
    Inscription : décembre 2004
    Messages : 1 964
    Points : 3 758
    Points
    3 758

    Par défaut

    Citation Envoyé par diden138 Voir le message
    Code :
    1
    2
    3
     
    writeln(1+random(49));
    writeln(1+random(49));
    lors qu'on exécute ce programme on aura par exemple 25 et 30 mais pas le même chiffre 30 et 30.
    par contre si on réexecute notre programme une 2éme fois on aura le même résultat
    Cordialement,
    Super c'est pas ce que j'ai dit dans mon post précédent?
    Citation Envoyé par krachik
    Executez une fois un code pareil dans une boucle sans randomize ça vous renvera des nombres différents mais exécutez plusieurs fois vous verez si la suite de nombres change ou pas
    L'aide en ligne de Pascal est clair

    Cordialement
    (Super l'edition des posts au fur et a mesure des reponses )
    Je suis ce que je suis grâce à ce que nous sommes tous Humanité aux Humains!! !

    Entre ce que je pense, ce que je veux dire, ce que je crois dire, ce que je dis ce que vous avez envie d'entendre, ce que vous croyez entendre, ce que vous entendez, ce que vous avez envie de comprendre, ce que vous comprenez ... Il y a dix possibilités que nous ayons des difficultés à communiquer. Mais essayons quand meme ....... E. Wells

  13. #13
    Membre expérimenté
    Avatar de diden138
    Développeur Web
    Inscrit en
    mai 2006
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 25

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : mai 2006
    Messages : 713
    Points : 508
    Points
    508

    Par défaut Re

    Citation Envoyé par krachik Voir le message
    J'insiste, éxecutes plusieurs fois a la suite ce code
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    uses crt;
    const max=5;
    var i:byte;
    begin
      clrscr;
      for i:=1 to max do
         writeln(random(50)+1);
      readln;
    end.
    Et dis moi si la série des 5 nombres change à chaque éxecution
    L'aide de Pascal n'est pas clair?
    Ahh exécuter le programme une 2éme ou une niéme fois donnera le même résultat c'est clair
    Je sens que si je vais pas dire ça je vais passer pour un anti randomize donc il faut mettre le randomize
    (j'avais pas encore fini )
    Cordialement,
    et vint le 20siècle et l'homme se mit à réflechir comme la machine auteur: diden138
    Langage: Pascal,OCaml,Delphi,c/c++.
    Langages web:Xhtml,Css,Php/Mysql,Javascript,Actionscript 2.0
    Plate forme:Windows XP Pro SP2./Red Hat 9.0/SUSE 10.2
    Config :Intel P4 3.2GHZ,2MO cach,512 RAM.
    Outils:Tp7,objective caml,Delphi 6 perso, C++builder 6,Visual C++ Express edition sous win,code-block sous linux(Ubuntu) .

  14. #14
    Expert Confirmé
    Avatar de krachik
    Inscrit en
    décembre 2004
    Messages
    1 964
    Détails du profil
    Informations forums :
    Inscription : décembre 2004
    Messages : 1 964
    Points : 3 758
    Points
    3 758

    Par défaut

    Citation Envoyé par diden138 Voir le message
    Ahh exécuter le programme une 2éme ou une niéme fois donnera le même résultat c'est clair
    Je sens que si je vais pas dire ça je vais passer pour un anti randomize donc il faut mettre le randomize
    (j'avais pas encore fini )
    Cordialement,
    La discussion n'est pas de savoir qui veut passer pour un anti randomize mais il faut connaître la fonction de randomize et son impact dans le code et ce qui se produit à l'execution
    Je suis ce que je suis grâce à ce que nous sommes tous Humanité aux Humains!! !

    Entre ce que je pense, ce que je veux dire, ce que je crois dire, ce que je dis ce que vous avez envie d'entendre, ce que vous croyez entendre, ce que vous entendez, ce que vous avez envie de comprendre, ce que vous comprenez ... Il y a dix possibilités que nous ayons des difficultés à communiquer. Mais essayons quand meme ....... E. Wells

  15. #15
    Expert Confirmé Sénior
    Inscrit en
    août 2006
    Messages
    3 544
    Détails du profil
    Informations forums :
    Inscription : août 2006
    Messages : 3 544
    Points : 4 044
    Points
    4 044

    Par défaut

    Jai,
    Citation Envoyé par diden138 Voir le message
    ça donnera deux numéro différents
    j'ajouterais aussi ça tiré du cours du Hugo ETIEVANT


    j'ajournerais encore une chose si on met pas de randomize on aura les même valeurs si on exécute le programme plusieurs fois mais pas dans le programme lui même j'explique exemple:
    Code :
    1
    2
    3
     
    writeln(1+random(49));
    writeln(1+random(49));
    lors qu'on exécute ce programme on aura par exemple 25 et 30 mais pas le même chiffre 30 et 30.
    par contre si on réexecute notre programme une 2éme fois on aura le même résultat
    Cordialement,
    Ceci n'est pas exclu, ça dépend du générateur effectivement utilisé.
    Il court en ce moment une espèce de grippe, mais elle ne court pas très vite, car on peut l'attraper sans courir.

  16. #16
    Membre éclairé Avatar de Tux++
    Étudiant
    Inscrit en
    avril 2008
    Messages
    281
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : avril 2008
    Messages : 281
    Points : 358
    Points
    358

    Par défaut

    Bonjour,

    n'oubliez pas que randomize() est parfois inintéressant. Je me base sur les cas où l'on doit générer une série de nombres aléatoires mais où on a besoin d'avoir plusieurs fois la même liste de ces nombres sur plusieurs exécutions d'un bout de code. Dans les algos génétiques et d'IA par exemple.

    Les générateurs de nombres pseudo-aléatoires sont d'ailleurs plus souvent utilisés en générant une seule fois une série de nombres aléatoires et en réutilisant cette même série.

    Bref, en général moi je préfère recréer une fonction d'hasard grâce aux générateurs congruentiels purs mais ça, ça dépends de l'utilisation
    Certified Oracle Advanced PL/SQL Professional
    Certified Oracle APEX Expert
    Certified Oracle SQL Expert

  17. #17
    Expert Confirmé Sénior
    Inscrit en
    août 2006
    Messages
    3 544
    Détails du profil
    Informations forums :
    Inscription : août 2006
    Messages : 3 544
    Points : 4 044
    Points
    4 044

    Par défaut

    Sai,
    Citation Envoyé par Tux++ Voir le message
    Bonjour,

    n'oubliez pas que randomize() est parfois inintéressant. Je me base sur les cas où l'on doit générer une série de nombres aléatoires mais où on a besoin d'avoir plusieurs fois la même liste de ces nombres sur plusieurs exécutions d'un bout de code. Dans les algos génétiques et d'IA par exemple.

    Les générateurs de nombres pseudo-aléatoires sont d'ailleurs plus souvent utilisés en générant une seule fois une série de nombres aléatoires et en réutilisant cette même série.

    Bref, en général moi je préfère recréer une fonction d'hasard grâce aux générateurs congruentiels purs mais ça, ça dépends de l'utilisation
    Il n'est pas inintéressant, mais on peut parfois l'omettre, à condition de savoir pourquoi on ne le met pas.

    Il est exact que dès qu'on utilise régulièrement des nombres pseudo-aléatoires, il est utile de regarder vers des générateurs plus performants que ceux fournis avec les compilateurs (surtout les vieux compilateurs), qui ne manquent pas, soit qu'on s'en fasse un (attention, ça ne s'improvise pas !!), soit qu'on en prenne un bien confirmé (voir par exemple Twister ).
    Il court en ce moment une espèce de grippe, mais elle ne court pas très vite, car on peut l'attraper sans courir.

  18. #18
    Membre éclairé Avatar de Tux++
    Étudiant
    Inscrit en
    avril 2008
    Messages
    281
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : avril 2008
    Messages : 281
    Points : 358
    Points
    358

    Par défaut

    exact
    Certified Oracle Advanced PL/SQL Professional
    Certified Oracle APEX Expert
    Certified Oracle SQL Expert

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •