C#用timer控件实现1~100随机数抽奖,已经抽中的不参与下一次循环,求代码

C#用timer控件实现1~100随机数抽奖,已经抽中的不参与下一次循环,求代码,第1张

直接Random.Next(1, 101)可产生随机数,用一个List<int>存起来,每次新随机就会去这个List中找,如果找到就再随机,自到随机出新的数。

1、放一个TextBox框、要把MultiLine属性改成True。(模拟输出结果)

2、放个Timer

3、放个Button。

4、定义两个全局对象

int inTimer = 0  //原子锁对象

List<int> DBList = new List<int>() //集合

写Button的_Click事件就一句话了

private void button1_Click(object sender, EventArgs e)

{

    timer1.Enabled = true  //开Timer

}

写Timer的Tick事件

private void timer1_Tick(object sender, EventArgs e)

{

    //加原子锁,由于携厅粗随机可能时间过长,造成多线程进入,污染DBList对象

    if (Interlocked.Exchange(ref inTimer, 辩镇1) == 0)

    {

        Random rand = new Random() //随机器

        int nums = 0

        do

        {

            nums = rand.Next(1, 101) //1~100之间一个int

        } while (DBList.Where(a => a == nums).Count() > 0)

                

        DBList.Add(nums) //放到集合中

        //在textbox1中输入

        textBox1.Text = String.Join("\r\n", DBList.ToArray())

        if (DBList.Count == 100)  //100个数都出现了就关Timer

    伏肢    {

            timer1.Enabled = false

            MessageBox.Show("结束!")

        }

        Interlocked.Exchange(ref inTimer, 0)  //解原子锁

    }

}

在窗体中放入label、button、timer、memo 四种类型的控件各一个:

label1--用于显示手机号码的滚动

timer1(时钟)--用于产生随机的手机号码

button1--点击即抽奖,并将获奖号码保存到memo1中

memo1--用于保存获奖手机号码

unit Unit1

interface

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, StdCtrls, ExtCtrls

type

  TForm1 = class(TForm)

    Label1: TLabel

    Button1: TButton

    Timer1: TTimer

    Memo1: TMemo

  指凳  procedure Timer1Timer(Sender: TObject)

    procedure FormCreate(Sender: TObject)

    procedure Button1Click(Sender: TObject)

  private

    { Private declarations }

  public

    { Public declarations }

  end

const

n=20

a:array[1..n] of string[11]=('13607193000','13607193001',

'13607193002','13607193003','13607193004',

'13607193005','13607193006','唯码旅13607193007',

'13607193008','13607193009',

'13607193010','13607193011','13607193012',

'13607193013','13607193014',

'13607193015'模粗,'13607193016','13607193017',

'13607193018','13607193019')  

var

  Form1: TForm1

implementation

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject)

var

k:integer

begin

k:=trunc(n*random+1)

  label1.Caption:=a[k]

end

procedure TForm1.FormCreate(Sender: TObject)

begin

      randomize

end

procedure TForm1.Button1Click(Sender: TObject)

begin

  memo1.Lines.Add(label1.Caption)

end

end.


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12386315.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存