begin process at 2010 07 30 10:07:16
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > EUROM V1.0.0

EUROM V1.0.0


 Description

Cliquez pour voir la capture en taille normale
Un générateur de nombres aléatoires pour l'euro-millions.
J'avais encore envie de jouer avec les nombres aléatoires suite au pipotron et en même temps de découvrir les fonctions "repeat" et "until" parfaites pour ce programme.

Source

  • {===============================================================================
  • Code source : BEAUMONT Christophe
  • Version : 1.0.0
  • Date : 21 Mars 2010
  • Micro-projet 06 : C'est le micro-projet 05 "Pipotron 1.2.1" qui m'a donné envie
  • de continuer à travailler avec les nombres aléatoires. Voici donc un générateur
  • de nombres pour l'euro-millions. Volontairement fait pour un seul tirage, à vous
  • de l'améliorer si vous voulez une version pour une grille complète.
  • Retrouvez ce source sur mon site "www.delphinautes.fr"
  • ===============================================================================}
  • unit f_main;
  • interface
  • uses
  • Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  • Dialogs, pngimage, ExtCtrls, StdCtrls, ShellAPI, Math;
  • type
  • TMain = class(TForm)
  • Cadre: TBevel;
  • BouleN1: TImage;
  • BouleN2: TImage;
  • BouleN3: TImage;
  • BouleN4: TImage;
  • BouleN5: TImage;
  • BouleC1: TImage;
  • BouleC2: TImage;
  • BtnTirage: TButton;
  • Url: TLabel;
  • Numero1: TLabel;
  • Numero2: TLabel;
  • Numero3: TLabel;
  • Numero4: TLabel;
  • Numero5: TLabel;
  • Numero6: TLabel;
  • Numero7: TLabel;
  • procedure FormCreate(Sender: TObject);
  • procedure UrlMouseEnter(Sender: TObject);
  • procedure UrlMouseLeave(Sender: TObject);
  • procedure UrlClick(Sender: TObject);
  • procedure BtnTirageClick(Sender: TObject);
  • private
  • { Déclarations privées }
  • public
  • { Déclarations publiques }
  • end;
  • var
  • Main: TMain;
  • implementation
  • {$R *.dfm}
  • procedure TMain.BtnTirageClick(Sender: TObject);
  • // On travaille sur des valeurs inférieures à 255 donc "byte" suffit.
  • var Num : array[1..7] of byte;
  • Temp : byte;
  • I : Integer;
  • begin
  • // On va traiter les 5 numéros normaux ( 1 à 5 )
  • for I := 1 to 5 do
  • begin
  • // Pour permettre au numéro du tirage précédent de ressortir à la même place
  • num[i] := 0;
  • // On tire un numéro compris entre 1 et 50
  • repeat Temp := RandomRange(1,50);
  • // On vérifie si le numéro n'a pas déjà été tiré sinon on refait un tirage
  • until ((Temp<>Num[1]) and (Temp<>Num[2]) and (Temp<>Num[3]) and (Temp<>Num[4]) and (Temp<>Num[5]));
  • // On sauvegarde la valeur tirée
  • Num[i] := Temp;
  • end;
  • // On va traiter les 2 numéros complémentaires ( 6 et 7 )
  • for I := 6 to 7 do
  • begin
  • // Pour permettre au numéro du tirage précédent de ressortir à la même place
  • num[i] := 0;
  • // On tire un numéro compris entre 1 et 9
  • repeat Temp := RandomRange(1,9);
  • // On vérifie qu'il n'a pas déjà été tiré
  • until ((Temp<>Num[6]) and (Temp<>Num[7]));
  • // On sauvegarde la valeur tirée
  • Num[i] := Temp;
  • end;
  • // On affiche le numéro 1
  • Numero1.Caption := IntToStr(Num[1]);
  • // On affiche le numéro 2
  • Numero2.Caption := IntToStr(Num[2]);
  • // On affiche le numéro 3
  • Numero3.Caption := IntToStr(Num[3]);
  • // On affiche le numéro 4
  • Numero4.Caption := IntToStr(Num[4]);
  • // On affiche le numéro 5
  • Numero5.Caption := IntToStr(Num[5]);
  • // On affiche le numéro complémentaire 1
  • Numero6.Caption := IntToStr(Num[6]);
  • // On affiche le numéro complémentaire 2
  • Numero7.Caption := IntToStr(Num[7]);
  • end;
  • procedure TMain.FormCreate(Sender: TObject);
  • begin
  • // Initialise le générateur de nombre aléatoire, à faire avant d'utiliser RandomRange
  • Randomize;
  • end;
  • procedure TMain.UrlMouseEnter(Sender: TObject);
  • begin
  • // Souligne l'adresse lorsque le pointeur de souris passe dessus
  • Url.Font.Style := [fsUnderline];
  • // Et change le pointeur de souris
  • Cursor := crHandPoint;
  • end;
  • procedure TMain.UrlMouseLeave(Sender: TObject);
  • begin
  • // Retire le soulignement lorsque le pointeur n'est plus dessus
  • Url.Font.Style := [];
  • // Et remet le curseur par défaut
  • Cursor := crDefault;
  • end;
  • procedure TMain.UrlClick(Sender: TObject);
  • begin
  • // Lance le navigateur par défaut sur mon site
  • ShellExecute(Handle,'Open','http://www.delphinautes.fr',nil,nil,SW_SHOWDEFAULT)
  • end;
  • end.
{===============================================================================
Code source : BEAUMONT Christophe
Version     : 1.0.0
Date        : 21 Mars 2010

Micro-projet 06 : C'est le micro-projet 05 "Pipotron 1.2.1" qui m'a donné envie
de continuer à travailler avec les nombres aléatoires. Voici donc un générateur
de nombres pour l'euro-millions. Volontairement fait pour un seul tirage, à vous
de l'améliorer si vous voulez une version pour une grille complète.
Retrouvez ce source sur mon site "www.delphinautes.fr"
===============================================================================}
unit f_main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, pngimage, ExtCtrls, StdCtrls, ShellAPI, Math;

type
  TMain = class(TForm)
    Cadre: TBevel;
    BouleN1: TImage;
    BouleN2: TImage;
    BouleN3: TImage;
    BouleN4: TImage;
    BouleN5: TImage;
    BouleC1: TImage;
    BouleC2: TImage;
    BtnTirage: TButton;
    Url: TLabel;
    Numero1: TLabel;
    Numero2: TLabel;
    Numero3: TLabel;
    Numero4: TLabel;
    Numero5: TLabel;
    Numero6: TLabel;
    Numero7: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure UrlMouseEnter(Sender: TObject);
    procedure UrlMouseLeave(Sender: TObject);
    procedure UrlClick(Sender: TObject);
    procedure BtnTirageClick(Sender: TObject);
  private
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;

var
  Main: TMain;

implementation

{$R *.dfm}

procedure TMain.BtnTirageClick(Sender: TObject);
// On travaille sur des valeurs inférieures à 255 donc "byte" suffit.
var Num : array[1..7] of byte;
    Temp : byte;
    I : Integer;
begin
// On va traiter les 5 numéros normaux ( 1 à 5 )
 for I := 1 to 5 do
  begin
// Pour permettre au numéro du tirage précédent de ressortir à la même place
    num[i] := 0;
// On tire un numéro compris entre 1 et 50
    repeat Temp := RandomRange(1,50);
// On vérifie si le numéro n'a pas déjà été tiré sinon on refait un tirage
    until ((Temp<>Num[1]) and (Temp<>Num[2]) and (Temp<>Num[3]) and (Temp<>Num[4]) and (Temp<>Num[5]));
// On sauvegarde la valeur tirée
    Num[i] := Temp;
  end;
// On va traiter les 2 numéros complémentaires ( 6 et 7 )
 for I := 6 to 7 do
  begin
// Pour permettre au numéro du tirage précédent de ressortir à la même place
    num[i] := 0;
// On tire un numéro compris entre 1 et 9
    repeat Temp := RandomRange(1,9);
// On vérifie qu'il n'a pas déjà été tiré
    until ((Temp<>Num[6]) and (Temp<>Num[7]));
// On sauvegarde la valeur tirée
    Num[i] := Temp;
  end;
// On affiche le numéro 1
 Numero1.Caption := IntToStr(Num[1]);
// On affiche le numéro 2
 Numero2.Caption := IntToStr(Num[2]);
// On affiche le numéro 3
 Numero3.Caption := IntToStr(Num[3]);
// On affiche le numéro 4
 Numero4.Caption := IntToStr(Num[4]);
// On affiche le numéro 5
 Numero5.Caption := IntToStr(Num[5]);
// On affiche le numéro complémentaire 1
 Numero6.Caption := IntToStr(Num[6]);
// On affiche le numéro complémentaire 2
 Numero7.Caption := IntToStr(Num[7]);
end;

procedure TMain.FormCreate(Sender: TObject);
begin
// Initialise le générateur de nombre aléatoire, à faire avant d'utiliser RandomRange
 Randomize;
end;

procedure TMain.UrlMouseEnter(Sender: TObject);
begin
// Souligne l'adresse lorsque le pointeur de souris passe dessus
 Url.Font.Style := [fsUnderline];
// Et change le pointeur de souris
 Cursor := crHandPoint;
end;

procedure TMain.UrlMouseLeave(Sender: TObject);
begin
// Retire le soulignement lorsque le pointeur n'est plus dessus
 Url.Font.Style := [];
// Et remet le curseur par défaut
 Cursor := crDefault;
end;

procedure TMain.UrlClick(Sender: TObject);
begin
// Lance le navigateur par défaut sur mon site
 ShellExecute(Handle,'Open','http://www.delphinautes.fr',nil,nil,SW_SHOWDEFAULT)
end;

end.

 Conclusion

Je m'amuse de plus en plus sur delphi, à m'en faire oublier la programmation sur Amiga ;)

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip Source avec une capture CHRONOS V1.0.0
Source avec Zip Source avec une capture JOYSTICK V1.0.0
Source avec Zip Source avec une capture PAQUES 1.0.0
Source avec Zip Source avec une capture PIPOTRON V1.4.2
Source avec Zip Source avec une capture VIDÉOTHÈQUE V1.0.0

 Sources de la même categorie

Source avec Zip ARBRES N-ARIES par Kagemaru
Source avec Zip Source avec une capture UN LOGICIEL POUR ÊTRE AVERTI QUAND UN BUS ARRIVE par pseudomino
Source avec Zip ALPHA DE CRONBACH (INDICE UTILISÉ EN PSYCHO) par fredelem
Source avec Zip Source avec une capture SIMULATION D'UN VIEUX PC par Debiars
Source avec Zip Source avec une capture NDKEYGEN (GÉNERER LES SERIAL NUMMER) par diglas

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture GÉNÉRATEUR DE NOMBRES PSEUDO-ALÉATOIRES par Bacterius
Source avec Zip DÉCOUVRIR LE NOMBRE MYSTÈRE par Lostsaga
Source avec Zip Source avec une capture CONVERSION LITTÉRALE D' 1 NOMBRE EN PORTUGAIS par MAURICIO
Source avec Zip Source avec une capture CONVERSION LITTÉRALE D'UN NOMBRE ENTIER OU FLOTTANT par japee
Source avec Zip GÉNÉRATEUR DE MOT DE PASSE par oliverdev

Commentaires et avis

Commentaire de Christophe67 le 21/03/2010 18:47:31

Je reconnais par avance que pour l'affichage des numéros j'ai été un peu fainéant ;)

Commentaire de Caribensila le 21/03/2010 19:13:06

Regarde la méthode que j'ai employée ici :

http://files.codes-sources.com/fichier.aspx?id=48783&f=BmpRndScanner%2fMainU.pas

Ca me semble plus propre que de retirer quand le numéro est déjà sorti...

D'autre part, le CPU travaille plus vite avec des Integers (bien qu'ici ce ne soit pas un problème...)

Commentaire de Bacterius le 24/03/2010 08:14:33

Attention, les nombres générés par la fonction Random ou RandomRange sont pseudo-aléatoires et non pas aléatoires ;)
Tes programmes sont simples et efficaces et de bonne qualité graphique, et le code ne cesse de s'améliorer. Continue à nous proposer des petits softs sympas comme ça Christophe :)

Cordialement, Bacterius !

Commentaire de Christophe67 le 24/03/2010 11:24:52

Bonjour Bacterius,

oui et de plus j'ai lu un article sur le forum concernant un bug de RandomRange qui ferait un tirage du genre 1=< X <50 et j'ai fait de nombreux tirages et en effet le 50 ne sort jamais, il faut que je mette comme intervalle (1,51) pour qu'il sorte.

Commentaire de cirec le 24/03/2010 13:04:55 administrateur CS

en ce qui concerne le Bug de RandomRange voir ici:
http://www.delphifr.com/codes/BUG-RANDOMRANGE_34908.aspx

Déposer des codes c'est bien mais il ne faudrait pas oublier que ces codes doivent apporter quelque chose de nouveau à la communauté (du jamais vu où une approche différente) !!
Si mes souvenirs sont bon c'est la première des conditions d'ajout d'une nouvelle source.

Bien que tes codes soient bien présentés (composants renommés, code commenté) ça n'en reste pas moins un exemple d'utilisation de fonctions et/où d'objets basiques de la VCL.

Imagine l'état du site si tout le monde faisait pareil !!

Ne baisse pas les bras pour autant ... tu es sur la bonne voie ;)

Bonne continuation.

Commentaire de Bacterius le 24/03/2010 17:55:56

Non, je ne parlais pas de ça Christophe, ce que tu mentionnes n'est pas un bug, c'est fait exprès (randomrange(a,b) tire un nombre aléatoire entre a et b, a inclus b exclus).
Mais je veux dire que les nombres sortis par ces fonctions ne sont pas "aléatoires" car ils ne sont pas statistiquement indépendants (ils sont générés par une formule mathématique).

Cordialement, Bacterius !

Commentaire de Christophe67 le 24/03/2010 19:08:54

@Cirec

Je pensais apporter quelque chose, en tout cas pour d'autres débutants, en fournissant des codes facilement compréhensibles.
C'est que je me suis trompé, j'avais mis en avant la notion de partage mais si c'est l'élitisme qui prime ( je ne vois que çà pour apporter "du jamais vu où une approche différente" ). Comme ce que je vais faire dans les semaines qui viennent n'apportera rien de nouveau, je vais donc conserver mes micro-projets pour mon site et désolé du dérangement.

A+

Christophe

Commentaire de cirec le 26/03/2010 21:49:51 administrateur CS

tu es quand même conscient que tous les programmeurs ont découvert les nombres aléatoires dès les premiers jours voir les premières heures et qu'on en fait le tour en 10mn !!!!!
faut arrêter les conneries et revenir sur terre !!

imagines si tous les membres avaient posté un code sur les nombres aléatoires !!
il doit déjà en exister des centaines qui traitent du sujet directement où indirectement (sans compter les messages sur le forum)
Ex. ton programme précédent "Pipotron"

Tu dois t'assurer qu'un tel code n'existe pas en plusieurs exemplaires avant de poster ton zip et c'est bien la première des conditions pour l'ajout d'une nouvelle source.

Pour apprendre les fonctions de base il y l'aide de Delphi elle est largement suffisante et si ce n'était pas le cas il y a encore le web qui doit contenir l'équivalent de 3 fois la bibliothèque national de données sur le sujet. Donc non je ne vois pas l'intérêt de déposer encore un code sur les nombres aléatoires.
Je ne crois pas que sur ton site tu vas déposer des dizaines de sources qui traitent des nombres aléatoires ... ça risque d'être très vite gavant !!! non ?

Pour l'approche différente où le jamais vu, le site regorge d'exemple ou l'auteur effectue une tache courante par une méthode différente (plus rapide, plus simple etc) et de nouveaux composants crées parce qu'ils n'existaient pas (où des procédures où des unités dédiés à une tache précise etc etc) et la majorité de ces codes sont de niveau "Débutant" ... tout cela n'a rien d'élitiste !!

je suis désolé que tu le prennes mal, c'était pas le but, mais il y a un règlement qui est le même pour tous ...

voilà j'espère avoir été plus clair cette fois
je suis certain que tu trouveras très vite quelque chose ... on est loin d'avoir tout fait ;)

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Dessiner un nombre aléatoire de cercles [ par DeanCorso666 ] Salut,Je d&#233;bute en delphi. Je voulais creer aleatoirement un nombre de cercle &#224; l'aide de canvas.ellipse. Mon probl&#232;me c'est qu'il ne m Afficher un nombre aléatoire [ par Dagnir ] Salut, Bon voila mon but :Quand on clic sur mon bouton il y a un nombre (aléatoire) qui s'affiche dans un champ.Dans l'aide j'ai trouvé :function Rand image aléatoire [ par etrix ] Salut,voilà, je voudrais afficher une image aléatoirement, chaque image est dans un Timage différent...il y'en a 8comment est ce que je pourrais faire Compter le nombre de labels [ par Dagnir ] Salut, Je voudrais savoir s'il est possible d'attribuer à une variable x le nombre de labels que la fiche comporte. Dans le même esprit, si on peut aj arrondir un nombre [ par 980074 ] bête petite question : comment arrondir, en pascal, un nombre entamé vers l'unité supérieure? TRUNC + 1 n'est pas valable pour les nombres entiers...e nombre de form dans le projet [ par phoenyx ] Salut à tous,Est-il possible (mais j'en doute) de récupérer le nombre de form qui vont être créée avant même que celles-ci le soient ou à défaut de sa Compter les fichiers d un repertoire [ par MoveX ] procedure TForm1.ShellTreeView1Change(Sender: TObject; Node: TTreeNode);var Info: TSearchRec; Nombre: Integer;begin nombre:= 0; if FindFirst(Shell Saisie multiples [ par mcaillou ] je cherche à faire une saisie sans passer par de multiplesboites de saisies.Le resultat de la premiere saisie donne le nombre de saisiessuivantes.Par Connaitre le nombre de ligne ds un dbgrid [ par jimmy69 ] Bonjour a tous,Je liste ma base de donnees a l'aide d'un dbgrid et j'aimerais savoir s'il etait possible de recuperer le nombre de ligne que j'ai et d Transformer un nombre décimal et l'arrondir à 2 chiffres après la virgule [ par Rowan ] Bonjour à tous et à toutes.Un grand merci à DELPHIPROG qui a bien répondu à mon problème de chaine de carractère.Cependant, je n'arrive toujours à fai


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Juillet 2010
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,045 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales