我用多線程寫的,你可以參考下。
創(chuàng)新互聯(lián)建站是一家專注于網(wǎng)站設(shè)計(jì)制作、成都做網(wǎng)站與策劃設(shè)計(jì),鼎城網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)建站做網(wǎng)站,專注于網(wǎng)站建設(shè)10多年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:鼎城等地區(qū)。鼎城做網(wǎng)站價(jià)格咨詢:028-86922220
系統(tǒng)界面圖如下:(注:重置功能為清除已經(jīng)中獎(jiǎng)號(hào)碼,回歸1-100都可以中獎(jiǎng)狀態(tài)。)
代碼:
public?partial?class?Form1?:?Form
{
public?Form1()
{
InitializeComponent();
}
System.Threading.Thread?g_Thread?=?null;
Listint?g_list?=?new?Listint();
int?g_Num?=?0;
delegate?void?g_delegate();
///?summary
///?開始
///?/summary
///?param?name="sender"/param
///?param?name="e"/param
private?void?button2_Click(object?sender,?EventArgs?e)
{
if(g_list.Count==100)
{
MessageBox.Show("所有數(shù)字已使用,請(qǐng)重置!");
return;
}
button3.Enabled?=?true;
Random?r?=?new?Random();
g_delegate?dele=?ChangeTxt;
g_Thread?=?new?System.Threading.Thread(()?=
{
while(this.IsDisposed==false)
{
g_Num?=?r.Next(1,?100);
if(g_list.Contains(g_Num))
{
g_Num?=??1;
}
while(g_list.Contains(g_Num))
{
g_Num++;
}
this.Invoke(dele);
System.Threading.Thread.Sleep(50);
}
});
g_Thread.Start();
}
void?ChangeTxt()
{
label2.Text?=?g_Num.ToString();
}
///?summary
///?停止
///?/summary
///?param?name="sender"/param
///?param?name="e"/param
private?void?button3_Click(object?sender,?EventArgs?e)
{
//if(g_Thread.ThreadState==System.Threading.ThreadState.Running)
{
g_Thread.Abort();
g_list.Add(Convert.ToInt32(label2.Text));
}
button3.Enabled?=?false;
}
///?summary
///?重置
///?/summary
///?param?name="sender"/param
///?param?name="e"/param
private?void?button1_Click(object?sender,?EventArgs?e)
{
g_list.Clear();
}
private?void?Form1_FormClosed(object?sender,?FormClosedEventArgs?e)
{
System.Environment.Exit(0);
}
}
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim i, j
j = GetRndNotRepeat(1, 10, 10)
If j(0) Then
For i = 1 To 10
MsgBox(j(i))
Next
End If
End Sub
Public Function GetRndNotRepeat(ByVal NumMin As Integer, ByVal NumMax As Integer, ByVal n As Integer)
'編制:xsfhlzh
'功能:取NumMin到NumMax間的n個(gè)隨機(jī)整數(shù)
'說明:取數(shù)標(biāo)志數(shù)組是Byte,每一位表示NumMin到NumMax間某個(gè)數(shù)的狀態(tài)
Dim arr() As Integer
If n NumMax - NumMin + 1 Then
ReDim arr(0)
arr(0) = 0
Return arr
Else
ReDim arr(n)
Dim m As Integer
Dim b() As Byte
m = Int((NumMax - NumMin) / 8)
ReDim b(m)
'取數(shù)標(biāo)志
Dim i
Dim x, y, z As Integer
Randomize()
arr(0) = 1
For i = 1 To n
Do
'找到x的位置,y表示x在數(shù)組的第幾個(gè)字節(jié),z表示x在該字節(jié)的第幾位
x = Int(Rnd() * (NumMax - NumMin + 1)) + NumMin
y = x - NumMin
z = 2 ^ (y Mod 8)
y = y \ 8
Loop While b(y) And z
b(y) = b(y) Or z
arr(i) = x
'找到未取的數(shù),并放入數(shù)組,設(shè)置標(biāo)志位
Next i
End If
Return arr
End Function
只要在代碼中使用隨機(jī)函數(shù)即可實(shí)現(xiàn)隨機(jī)抽取功能
一、vb隨機(jī)數(shù)生成的方法
vb隨機(jī)數(shù)生成函數(shù)是 Rnd[(number)],number 參數(shù)為可選項(xiàng)。在調(diào)用 Rnd 生成隨機(jī)數(shù)之前,先使用 Randomize 初始化隨機(jī)數(shù)生成器來產(chǎn)生種子,該生成器是根據(jù)系統(tǒng)計(jì)時(shí)器來產(chǎn)生種子的。
1、生成100以內(nèi)的隨機(jī)數(shù)
Randomize
Int(Rnd() * 100)//生成 0 - 99 之間的隨機(jī)數(shù)
Int(Rnd() * 101)//生成 0 - 100 之間的隨機(jī)數(shù)
2、生成指定范圍隨機(jī)數(shù)
由于 vb 沒有提供直接生成指定范圍隨機(jī)數(shù)的函數(shù),所以要把 Rnd 變通一下,方法如下:
Int((上限 - 下限 + 1) * Rnd + 下限);
把它封裝成可直接調(diào)用的函數(shù)如下:
Function GetRandom(under, over As Integer) As Integer
If under over Then
temp = under;
under = over;
over = temp;
End If
Randomize
GetRandom = Int((under - over + 1) * Rnd + over);
End Function
調(diào)用方法:
GetRandom(10, 100);//生成10到100的隨機(jī)數(shù)
二、vb.net生成隨機(jī)數(shù)的方法
1、方法:Random.Next(int minValue, int maxValue);
2、說明:
若 minValue 和 maxValue 都沒有提供,則生成一個(gè) 0 - 2147483647 之間的隨機(jī)數(shù);
若 minValue 和 maxValue 只提供一個(gè),則生成一個(gè) 0 - maxValue 之間的隨機(jī)數(shù);
若 minValue 和 maxValue 兩個(gè)都提供,則生成一個(gè) minValue - maxValue 之間的隨機(jī)數(shù);
3、舉例
Dim ran = New System.Random()
ran.Next()//生成 0 - 2147483647 之間的隨機(jī)數(shù)
ran.Next(100)//生成 0 - 100 之間的隨機(jī)數(shù)
ran.Next(10, 100)//生成 10 - 100 之間的隨機(jī)數(shù)
Dim ran = New Random(DateTime.Now.Millisecond)//通過日期的微秒生成隨機(jī)數(shù)
新聞標(biāo)題:包含vb.net抽簽的詞條
本文路徑:http://m.rwnh.cn/article48/hpjeep.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、品牌網(wǎng)站制作、App開發(fā)、電子商務(wù)、網(wǎng)站設(shè)計(jì)、云服務(wù)器
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)