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

Turbo Pascal Discussion :

Générer des entiers aléatoires différents [Turbo Pascal]


Sujet :

Turbo Pascal

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2014
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Générer des entiers aléatoires différents
    Coucou
    J'essaie de générer des nombres au hasard pour les utiliser dans un programme et vérifier quelle est la probabilité approchée de perdre ou de gagner à un jeu dans un exemple précis. Pour le fun
    Voici mon problème : dans la boucle while, random(n) donne toujours le même nombre dans une exécution. Puis un autre nombre pour une autre exécution. Je n'arrive pas à trouver l'erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    program blackjack ;
    var n, banque, compteuras, win, i : integer ;
     
    begin
         compteuras:=0;
         banque:=10;
         win:=0;
         for i:=1 to 100 do begin
                                 while banque<17 do begin
                                                         randomize ;
                                                         n:=random(13)+1;
                                                         if n>9 then n:=10;
                                                         if (n=1) and (banque<11) then begin
                                                                                             n:=11;
                                                                                             compteuras:=1;
                                                                                        end;
                                                         if ((banque+n)>21) and (compteuras=1) then begin
                                                                                                         compteuras:=compteuras-1 ;
                                                                                                         banque:=banque+n-10;
                                                                                                    end
                                                         else banque:=banque+n;
                                                    end;
                                 if banque<22 then win:=win+1;
                                 writeln(banque); //j'ai mis ça pour vérifier le résultat, et sur les 100 appels, banque vaut exactement la même valeur
                            end;
         writeln(win);
    end.

  2. #2
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 729
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 729
    Points : 15 132
    Points
    15 132
    Par défaut
    Salut,

    En Turbo Pascal je ne sais pas, mais en Lazarus on met l'instruction randomize; en début de procédure/programme.

    Ensuite, pour y voir plus clair, tu pourrais faire ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                   n:=random(13)+1;
                   writeln(n); // pour voir la valeur, et tu peux en mettre partout
    Comme ça tu verras ce qui se passe.

    Ensuite tu prends un papier et un crayon, et tu réfléchis...
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2014
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Dsl d'avoir copier toute ma merde, pas évident à comprendre
    Voilà le truc qui me chiffonne : dans une boucle, le randomize ne sert à rien.
    Il n'est utile qu'en relançant le programme.
    Et j'aimerais prendre plusieurs nombres aléatoires dans un seul programme.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    begin
         for i:=1 to 10 do begin
                                randomize;
                                n:=random(13)+1;
                                writeln(n); //n=constante
                           end;
         readln;
    end.

  4. #4
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 072
    Points : 15 462
    Points
    15 462
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par LeStriker Voir le message
    Voilà le truc qui me chiffonne : dans une boucle, le randomize ne sert à rien.
    Bonjour !

    La réponse a déjà été donnée :

    Citation Envoyé par Jipété Voir le message
    on met l'instruction randomize; en début de procédure/programme.
    Et puis, sois gentil de t'exprimer correctement lorsque tu postes un message dans ce forum.
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2014
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Aaaah okay !
    Dsl j'avais rien compris au départ...
    Bah du coup je vous remercie les gars, c'est sympa !

  6. #6
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 072
    Points : 15 462
    Points
    15 462
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par LeStriker Voir le message
    Bah du coup je vous remercie les gars, c'est sympa !
    Pas de quoi ! Tu es le bienvenu. Bonne continuation.
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  7. #7
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 937
    Points : 59 417
    Points
    59 417
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    Un bon réflexe à acquérir : consulter la FAQ !
    http://pascal.developpez.com/faq/?pa...mbre-au-hasard

    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

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

Discussions similaires

  1. générer des nombres aléatoire différents
    Par kochfet dans le forum Langage
    Réponses: 2
    Dernier message: 14/05/2014, 11h59
  2. Générer nombres entiers aléatoire différents
    Par mailbox dans le forum Fortran
    Réponses: 3
    Dernier message: 07/03/2010, 15h20
  3. Réponses: 3
    Dernier message: 08/03/2008, 11h01
  4. Générer des couleurs aléatoires
    Par sbeu dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 06/06/2006, 16h21
  5. Réponses: 2
    Dernier message: 16/05/2006, 17h02

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