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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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
    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 confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 146
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 146
    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...

  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
    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 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 173
    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.

  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
    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 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 173
    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.

+ 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