HanDs
管理员

[Delphi文章] 双色球随机选小程序 





学习中请遵循国家相关法律法规,黑客不作恶。没有网络安全就没有国家安全

本站需要登陆后才能查看

最近去买彩票,让营业员帮我机选,发现他根本就是从上一个人打出来的彩票复制的,就写了这个程序,先自己随机选几注再去买

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Label1: TLabel;
    edtRed1: TEdit;
    edtRed2: TEdit;
    edtRed3: TEdit;
    edtRed4: TEdit;
    edtRed5: TEdit;
    edtRed6: TEdit;
    Label2: TLabel;
    edtBlue: TEdit;
    Button1: TButton;
    Timer1: TTimer;
    Button2: TButton;
    procedure Timer1Timer(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
const MaxRed=33;
const MaxBlue=16;

procedure TForm1.Timer1Timer(Sender: TObject);
var
  RedArr: array[1..6] of Byte;
  i,j: Integer;
  value: Byte;
  b: Boolean;
  function MakeRandom(Rang: Integer): Byte;  //生成<>0的随机数
  begin
    repeat
      result := Random(Rang);
    until result<>0;
  end;
  procedure compositor(var L: array of byte); //排序
  var
    i,j:byte;
      v:byte;
  begin
     for i:=low(L) to high(L) do
     begin
      v:=L[i];
      j:=i;
      while (j<>low(L))and(L[j-1]>v) do
      begin
        L[j]:=L[j-1];
        j:=j-1;
      end;
      L[j]:=v;
     end;
  end;
begin
  FillChar(RedArr,6,0);
  //clear
  for i:= 0 to ComponentCount-1 do
    if (Components[i] is TEdit) then
      (Components[i] as TEdit).Clear;
  //用随机数填充
  for i:=1 to 6 do
    while true do
    begin
      b := false;
      value := MakeRandom(MaxRed);
      for j:=1 to i do
        if RedArr[j]=value then  //已有重复数存在
        begin
          b := false;
          break;
        end
        else
          b := true;
      if b then
      begin
        RedArr[i] := value;
        break;
      end;
    end;
  //排序
  compositor(RedArr);
  //蓝球
  while true do
  begin
    b := false;
    value := MakeRandom(MaxBlue);
    for i:=1 to 6 do
      if value=RedArr[i] then
      begin
        b := false;
        break;
      end
      else
        b := true;
    if b then break;
  end;

  edtRed1.Text := FormatFloat('00',RedArr[1]);
  edtRed2.Text := FormatFloat('00',RedArr[2]);
  edtRed3.Text := FormatFloat('00',RedArr[3]);
  edtRed4.Text := FormatFloat('00',RedArr[4]);
  edtRed5.Text := FormatFloat('00',RedArr[5]);
  edtRed6.Text := FormatFloat('00',RedArr[6]);
  edtBlue.Text := FormatFloat('00',value);

  Application.ProcessMessages;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if not Timer1.Enabled then Timer1.Enabled := true;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
if Timer1.Enabled then Timer1.Enabled := false;
end;

end.


学习中请遵守法律法规,本网站内容均来自于互联网,本网站不负担法律责任
双色球 随机 程序
#1楼
发帖时间:2016-7-9   |   查看数:0   |   回复数:0
游客组
快速回复