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

Free Pascal Discussion :

Tirage aléatoire du nombre 0 ou 1


Sujet :

Free Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Sans
    Inscrit en
    Mai 2017
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Mai 2017
    Messages : 62
    Par défaut Tirage aléatoire du nombre 0 ou 1
    Bonjour,
    Mon but est de tirer un nombre aléatoire soit 1 soit 0.

    Pensez-vous que c'est correct ? ou une autre méthode existe ?
    la boucle c'est pour vérifier de visu que ça fonctionne .
    Merci de vos conseils
    voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    program testrandom;
    //but tirage d'un nombre entre 0 et 1
    var r,i : integer;
    begin
    	randomize;
    	for i:=1 to 200 do
    	begin
    		r:=(random(2)+1)-1;
    		writeln(r);
    	end;
    end.
    Bien cordialement

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 162
    Par défaut
    Salut,

    pourquoi faire simple quand on peut faire compliqué,
    Citation Envoyé par ptitjoz Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    program testrandom;
    //but tirage d'un nombre entre 0 et 1
    var i : integer;
    begin
    	randomize;
    	for i:=1 to 200 do writeln(random(2));
    end.

  3. #3
    Membre confirmé
    Homme Profil pro
    Sans
    Inscrit en
    Mai 2017
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Mai 2017
    Messages : 62
    Par défaut
    Bonjour
    Oui effectivement... merci pour le code optimisé !
    Bien cordialement

  4. #4
    Membre Expert

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    Décembre 2010
    Messages
    1 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 333
    Billets dans le blog
    9
    Par défaut Tirage aléatoire du nombre 0 ou 1
    Bonjour,
    Une petite variante permet de modifier les probabilités respectives de sortie des deux nombres:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    program testrandom;
    //but tirage d'un nombre entre 0 et 1
    CONST N = 1000; N0 = 250;
    var i, j, k : integer;
    begin
      randomize;
      for i:=1 to 200 do begin 
                           j:= Random(N);
                           IF (j<N0) THEN k:= 0     // Prob. de tirage du '0': N0/N = 0.250
                                     ELSE k:= 1;
                           writeln(k);
                         end
    end.

  5. #5
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 162
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 162
    Par défaut
    Yep !


    Citation Envoyé par wiwaxia Voir le message
    Une petite variante permet de modifier les probabilités respectives de sortie des deux nombres
    Quoi ?
    Tu veux orienter le hasard ? À quand une martingale pour gagner à la roulette,

    Parce qu'in fine, si le tirage donnait 111111111110111111, ben ça serait du hasard, et si ça ne plaît pas et qu'on trafique pour avoir 111011001110111101 ben c'est du traficotage, plus du hasard.

    Déontologiquement c'est pas glop, àmha.

    Par contre, ton code pourrait être utile à une station de radio automatisée, pour éviter de repasser toujours les mêmes disques

  6. #6
    Membre Expert

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    Décembre 2010
    Messages
    1 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 333
    Billets dans le blog
    9
    Par défaut

    Citation Envoyé par Jipété Voir le message
    ... Quoi ? Tu veux orienter le hasard ?
    Déontologiquement c'est pas glop, àmha.
    Un tirage pseudo-aléatoire à deux issues n'implique aucunement des probabilités égales: le programme précédent simule le prélèvement en aveugle (avec remise) d'une bille dans un sac qui en contient 1000, parmi lesquelles 250 noires (0) et 750 blanches (1).
    L'arnaque commencerait à partir du moment où on eût laissé croire à l'égalité des chances de sortie de chaque couleur.

    Citation Envoyé par Jipété Voir le message
    ... Parce qu'in fine, si le tirage donnait 111111111110111111, ben ça serait du hasard, et si ça ne plaît pas et qu'on trafique pour avoir 111011001110111101 ben c'est du traficotage, plus du hasard ...
    On ne peut rien affirmer de deux séquences binaires finies, considérées isolément, en l'absence de toute information sur le processus qui les a produites.

    Citation Envoyé par Jipété Voir le message
    ... À quand une martingale pour gagner à la roulette, ...
    Tout nouvel événement est imprévisible, puisque indépendant des résultats précédents ... c'est bien ce que fait en pratique un générateur de nombres pseudo-aléatoires.

    Du programme suivant
    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
     PROGRAM Texte;
     USES Crt;
     CONST Imax = 50; Jmax = 70; N = 1000; N1 = 250;
     VAR u: Byte; i, j, k: Word; Fich_T: Text;
     
     BEGIN
       Randomize;
       Assign(Fich_T, 'D:\ZZZZZZ\F_Texte.txt');
       Rewrite(Fich_T);
       FOR i:= 1 TO Imax DO
         FOR j:= 1 TO Jmax DO
           BEGIN
             k:= Random(N);
             IF (k<N1) THEN u:= 0 ELSE u:= 1;
             IF (j = Jmax) THEN WriteLn(Fich_T, u:1)
                           ELSE Write(Fich_T, u:1)
           END;
       Close(Fich_T); ReadLn
     END.
    résulte la séquence binaire de 3500 termes, dont un quart seulement sont des zéros: chaque nouvelle valeur n'en est pas moins imprédictible ...

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    1011101110101011110001110101111111001101101111011100101111111111111111
    0111111101111111111111110011101111111011111110110110111100111110000100
    1100011110111111011111101111111111101111111001101110101010111111101011
    1111111111111111111111101101111111110011111011111111011111110111100011
    1101011111101001010111001111100111111111110111111111111011101011011111
    0001111011111111001010111101111111111011011110111111110111101111111011
    0000011111100111110101110111011111111110010111101011101001110010111101
    0111111100111101111110110101011111111110011111111110100111101111001111
    1111111101010111111111000111011110111110011111111111111111111111111111
    1101100001010010011000110111111011101101111111111110110111101011111111
    1111010111011111001101101111111110101111111000011101001101111101111111
    0110111101111111111111110111100101111110011101111011001101111111011111
    1111011111110111101010101101100110100101101111100110111111011111111111
    0111111111101111011111111111111111111101101110011110000111101111000011
    1001001101110011111111011111010111111011101101110110110100001111101011
    1111111101011111111111011100111110111111011111101110111111111111011011
    1011101011011111101011001111111011111010101110111110100011110111111111
    1111111000110101101111110011011111111011110001010100111110101111111011
    1110110011011111011111111111011111111011111110001011111111110011011111
    0011101111101111011101011111111111111101101111011111011111100110111111
    1001011111101101111100001001110010100111011110101101111010101111101111
    0110011110111101101011110111000100111111010101011111111111111111011110
    1110110111111011111110111011111111101101110011111111110101111110101111
    1111111101111011100100111111101110111111101101111010011111010111011111
    1110111101111011111100111110111101111111100110111110111111101111110111
    1001101110110010111000111100010111011100111111011011110111011101110001
    1111101101011111001111011110101111101111111101111111110111000011011111
    1111111111110101111111111110111011111100110011110111111111111111111110
    1101111011010111100111100111111010000111010101111111111011110111110111
    0111111101110111010111101111110010011101111001110111100111111101111111
    1110011101111111101111111101110101101101111111100111110111111111111101
    0111011100110001010110111111111101111001110110111111001111111111111111
    1001111010111010111110110110110111111110111001111001111111101111111011
    1111010101111101111001111010001111111111101111111101111110100111111111
    1111110111101110000110010110001001111110100011111110111111000101100011
    1100101010110111010110111111101111100110111111111111111111011111100011
    1110110111011101110101111101101001010110110110111101111111111101111110
    0101100101011111111111001101111111100111010111111111111111100110111111
    0111111111111101000111111110111001111111011001011110011110111101011111
    1110110111011111110010101110011010111011101010111100110011111111111111
    1011101111110011111111011011111111101110111111010100111100110010011100
    1111011111010111001111111110101011101011110111000101111111110100111111
    1111100011101101111111010111111111011111011101111111010101110111110011
    1111110111110111111111110011011100111001111011001111110111111011101111
    1110111111010111100111011100111100101111111101010111111011100111011010
    1111111100111111011010111111110101101111101100000011110010111010111110
    0110001111101000111100011110111010111101111110111111101011111111111101
    1100011100110111111101111011111101111111111111011111111111111011111111
    0000110111110110111111110101111111001111111110111111011110110111111101
    1100111011101111111110101111011111011111111011111111110110111011110101


    PS: J'ignore d'où vient la coloration de la dernière partie du texte.

Discussions similaires

  1. tirage aléatoire de nombre d'un vecteur
    Par RatamWolfen dans le forum MATLAB
    Réponses: 13
    Dernier message: 26/03/2015, 15h08
  2. Tirage aléatoire d'un nombre entre 0 et 100
    Par parano dans le forum C++
    Réponses: 7
    Dernier message: 05/03/2007, 15h17
  3. tirage aléatoire
    Par uloaccess dans le forum Access
    Réponses: 10
    Dernier message: 22/02/2006, 19h02
  4. Tirage aléatoire dans une base donnée
    Par leloup84 dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 30/01/2006, 17h13
  5. Eviter deux nombres identiques dans un tirage aléatoire
    Par moon tiger dans le forum Pascal
    Réponses: 5
    Dernier message: 25/11/2002, 10h57

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