捐赠 | 广告 | 注册 | 发布 | 上传 | 关于我们    
  沪ICP备05001939号 DELPHI盒子 | 盒子论坛 | 盒子文章 | 盒子问答悬赏 | 最新更新 | 论坛检索 | 下载中心 | 高级搜索    
  精品专区 | 繁體中文 | 奖励公告栏 | 直通车账号登陆 | 关闭GOOGLE广告 | 临时留言    
盒子资源分类
全部展开 - 全部合拢
双色球随机选小程序(无下载)
关键字:随机数,排序。。。。。
来 自:原创
平 台:Win2k/XP/NT,Win2003 下载所需:0 火柴
深浅度:初级 完成时间:2009/12/5
发布者:siking 发布时间:2009/12/9
编辑器:DELPHI7 语  种:简体中文
分 类:其他 下载浏览:385/8767
加入到我的收藏
下载错误报错
登陆以后才能下载
 用户名:
 密 码:
自动登陆(30天有效)
图片如果打不开,说明流量不够了,请稍候下载……
最近去买彩票,让营业员帮我机选,发现他根本就是从上一个人打出来的彩票复制的,就写了这个程序,先自己随机选几注再去买

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.
Google
 
本站原创作品,未经作者许可,严禁任何方式转载;转载作品,如果侵犯了您的权益,请联系我们
龙脉加密锁 15元起 Grid++Report 报表 申请支付@网
 相关文章
没有相关文章
相关评论
共有评论7条 当前显示最后6条评论
inbreak 2009/12/9 20:11:59
乱说。。。。

双色球的机器。。在 打印出一了前一张票后。。

就会初台化输入框。。。初始化输入项,不是留空白,而是直接随便生成了号码了。

所以,,,,售票员就直接 打印了。。。

========

如果不信就你去买 10 注,让他打印两张给你看看,,

我保证也只是按两个 打印键  然后就给你两张票了。

如果按楼主的理解,那这两张票就应该是一样的喽。

但是实际并非如此。

======

所以你把搞这个售票系统的人想得白痴了,同时就证明了你无知。
yzqyb 2009/12/10 10:22:55
售票员不开源.
作者公开源码,支持.
fanwendou 2009/12/14 14:52:15
应在把概率考虑进去,这样我们中奖几率大。呵呵......
hujiacheng 2010/1/14 13:41:01
应该可以输入以前的号码 进行排列。。这样都不用写程序了  直接拿¥
andyfurong 2010/3/14 3:14:42
没有考虑到机率的问题,所以实用性不强。
我也正在想写个这样的软件。
lichangrui 2013/1/29 13:32:03
瞎说,每次重新运行程序,开始的数值都一样
我要发表评论 查看全部评论
 
  DELPHI盒子版权所有 1999-2012 V3.01 沪ICP备05001939号 更新RSS列表