Précédent   Forum du club des développeurs et IT Pro > Autres langages > Pascal
Pascal Forum d'entraide sur la programmation en langage Pascal et sur les EDI. Avant de poster -> la F.A.Q Pascal, les cours
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 24/10/2008, 14h27   #1
mayco_3
Invité de passage
 
Inscription : 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
mayco_3 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/10/2008, 16h29   #2
M.Dlb
Rédacteur/Modérateur
 
Avatar de M.Dlb
 
Inscription : avril 2002
Messages : 2 275
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : avril 2002
Messages : 2 275
Points : 3 392
Points : 3 392
Random ?
__________________
M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal
M.Dlb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/10/2008, 18h34   #3
darrylsite
Rédacteur
 
Avatar de darrylsite
 
Inscription : juillet 2007
Messages : 1 296
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 1 296
Points : 1 922
Points : 1 922
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);
darrylsite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/11/2008, 00h15   #4
-pH+-
Invité de passage
 
Inscription : novembre 2008
Messages : 2
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 2
Points : 2
Points : 2
Et il ne faut pas oublier le randomize, sans lui, les mêmes chiffres reviennent tout le temps =(
-pH+- est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/11/2008, 07h52   #5
vg-matrix
Membre éprouvé
 
Avatar de vg-matrix
 
Inscription : février 2007
Messages : 1 182
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : février 2007
Messages : 1 182
Points : 472
Points : 472
Envoyer un message via MSN à vg-matrix Envoyer un message via Yahoo à vg-matrix
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
vg-matrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2008, 21h12   #6
paskal++
Nouveau Membre du Club
 
Inscription : mai 2008
Messages : 77
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 77
Points : 39
Points : 39
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 !
paskal++ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2008, 21h22   #7
diden138
Membre expérimenté
 
Avatar de diden138
 
Développeur Web
Inscription : mai 2006
Messages : 713
Détails du profil
Informations personnelles :
Âge : 24

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2006
Messages : 713
Points : 523
Points : 523
Envoyer un message via Skype™ à diden138
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) .
diden138 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2008, 21h54   #8
krachik
Expert Confirmé
 
Avatar de krachik
 
Inscription : décembre 2004
Messages : 1 964
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 1 964
Points : 3 965
Points : 3 965
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
krachik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2008, 21h58   #9
droggo
Expert Confirmé
 
Inscription : août 2006
Messages : 3 417
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 3 417
Points : 3 772
Points : 3 772
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.
droggo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2008, 22h05   #10
diden138
Membre expérimenté
 
Avatar de diden138
 
Développeur Web
Inscription : mai 2006
Messages : 713
Détails du profil
Informations personnelles :
Âge : 24

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2006
Messages : 713
Points : 523
Points : 523
Envoyer un message via Skype™ à diden138
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
Citation:
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) .
diden138 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2008, 22h11   #11
krachik
Expert Confirmé
 
Avatar de krachik
 
Inscription : décembre 2004
Messages : 1 964
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 1 964
Points : 3 965
Points : 3 965
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
krachik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2008, 22h16   #12
krachik
Expert Confirmé
 
Avatar de krachik
 
Inscription : décembre 2004
Messages : 1 964
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 1 964
Points : 3 965
Points : 3 965
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
krachik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2008, 22h18   #13
diden138
Membre expérimenté
 
Avatar de diden138
 
Développeur Web
Inscription : mai 2006
Messages : 713
Détails du profil
Informations personnelles :
Âge : 24

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2006
Messages : 713
Points : 523
Points : 523
Envoyer un message via Skype™ à diden138
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) .
diden138 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2008, 23h13   #14
krachik
Expert Confirmé
 
Avatar de krachik
 
Inscription : décembre 2004
Messages : 1 964
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 1 964
Points : 3 965
Points : 3 965
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
krachik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2008, 00h03   #15
droggo
Expert Confirmé
 
Inscription : août 2006
Messages : 3 417
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 3 417
Points : 3 772
Points : 3 772
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.
droggo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2008, 13h38   #16
Tux++
Membre éclairé
 
Avatar de Tux++
 
Étudiant
Inscription : avril 2008
Messages : 280
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2008
Messages : 280
Points : 317
Points : 317
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
__________________
* Privacy Rights Management in Mobile Applications, research student (Primma project)
* SecureChange project, research student
Tux++ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2008, 15h08   #17
droggo
Expert Confirmé
 
Inscription : août 2006
Messages : 3 417
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 3 417
Points : 3 772
Points : 3 772
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.
droggo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2008, 15h53   #18
Tux++
Membre éclairé
 
Avatar de Tux++
 
Étudiant
Inscription : avril 2008
Messages : 280
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2008
Messages : 280
Points : 317
Points : 317
exact
__________________
* Privacy Rights Management in Mobile Applications, research student (Primma project)
* SecureChange project, research student
Tux++ est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 21h36.


 
 
 
 
Partenaires

Hébergement Web