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

Pascal Discussion :

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


Sujet :

Pascal

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Juillet 2005
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 1
    Points : 1
    Points
    1
    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 464
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 464
    Points : 4 311
    Points
    4 311
    Par défaut
    Random ?
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

  3. #3
    Rédacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Points : 2 501
    Points
    2 501
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    resultat:=1+random(49);

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    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 confirmé Avatar de vg-matrix
    Inscrit en
    Février 2007
    Messages
    1 220
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Février 2007
    Messages : 1 220
    Points : 612
    Points
    612
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Membre régulier
    Inscrit en
    Mai 2008
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 117
    Points : 85
    Points
    85
    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 confirmé
    Avatar de diden138
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    714
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 714
    Points : 589
    Points
    589
    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 : 4 015
    Points
    4 015
    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é

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    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.
    Si les cons volaient, il ferait nuit à midi.

  10. #10
    Membre confirmé
    Avatar de diden138
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    714
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 714
    Points : 589
    Points
    589
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : 4 015
    Points
    4 015
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : 4 015
    Points
    4 015
    Par défaut
    Citation Envoyé par diden138 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 confirmé
    Avatar de diden138
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    714
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2006
    Messages : 714
    Points : 589
    Points
    589
    Par défaut Re
    Citation Envoyé par krachik Voir le message
    J'insiste, éxecutes plusieurs fois a la suite ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : 4 015
    Points
    4 015
    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é

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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é.
    Si les cons volaient, il ferait nuit à midi.

  16. #16
    Membre averti 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 : 379
    Points
    379
    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é

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    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 ).
    Si les cons volaient, il ferait nuit à midi.

  18. #18
    Membre averti 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 : 379
    Points
    379
    Par défaut
    exact
    Certified Oracle Advanced PL/SQL Professional
    Certified Oracle APEX Expert
    Certified Oracle SQL Expert

Discussions similaires

  1. Réponses: 4
    Dernier message: 23/11/2008, 15h55
  2. [8.5]Afficher le numéro des lignes
    Par Invité dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 30/04/2007, 12h24
  3. Réponses: 4
    Dernier message: 30/01/2007, 14h42
  4. [phpMyAdmin] Afficher le numéros de ligne des champs
    Par Cube55 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 03/01/2007, 10h43
  5. Ne pas afficher des numéros de pages
    Par Eric06 dans le forum Mise en forme
    Réponses: 2
    Dernier message: 18/12/2006, 23h35

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