方法名稱:next();功能描述:返回一個(gè)0~2147483647之間的整數(shù)
成都創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都做網(wǎng)站、成都網(wǎng)站制作、寧遠(yuǎn)網(wǎng)絡(luò)推廣、重慶小程序開發(fā)、寧遠(yuǎn)網(wǎng)絡(luò)營銷、寧遠(yuǎn)企業(yè)策劃、寧遠(yuǎn)品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);成都創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供寧遠(yuǎn)建站搭建服務(wù),24小時(shí)服務(wù)熱線:18980820575,官方網(wǎng)址:chinadenli.net
方法名稱:next(i);功能描述:返回一個(gè)0~i之間的整數(shù)
方法名稱:next(i,j);功能描述:返回一個(gè)i~j之間的整數(shù)
方法名稱:Nextdouble();功能描述:返回一個(gè)0~1之間的隨機(jī)小數(shù)
================
使用方法:
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim rand = New System.Random()
MsgBox(rand.next().ToString())
End Sub
==========================
產(chǎn)生N個(gè)不同數(shù)的話,我給你個(gè)我寫的VB的代碼,你稍微改下:
產(chǎn)生0-10的數(shù):
Private Sub Command1_Click()
Randomize
Dim a(10) As Long
n = 10
For i = 0 To n
a(i) = Int(Rnd() * (n + 1))
For j = 0 To i - 1
If a(i) = a(j) Then
i = i - 1
Exit For
End If
Next
Next
For i = 0 To n
Print a(i)
Next
End Sub
先把所有電話名單放在一個(gè)List泛型集合中,取出一個(gè)就Remove掉一個(gè),這樣就不會(huì)重復(fù)了。
幾等獎(jiǎng)幾個(gè)按照你的需求來循環(huán)即可。
給文本框添加內(nèi)容:TextBox1.Text = 字符串
換行用vbCrLf常量表示。
詳細(xì)的可以私信
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim oleDbConnection1 As OleDb.OleDbConnection
Dim oledbDataAdapter As OleDb.OleDbDataAdapter
Dim oledbData As DataSet = New DataSet
Dim strConnect As String = "Provider= OraOLEDB.Oracle;Data Source=888;User ID=888;Password=888;"
oleDbConnection1 = New System.Data.OleDb.OleDbConnection(strConnect)
Dim strSql As String
strSql = "select *" " from xx"
Dim oledbCommand As OleDb.OleDbCommand
oledbCommand.CommandText = strSql
oledbCommand.CommandType = CommandType.Text
oledbCommand.Connection = oleDbConnection1
oledbDataAdapter.SelectCommand = oledbCommand
oleDbConnection1.Open()
oledbDataAdapter.Fill(oledbData, "gy_bingrenxx")
oleDbConnection1.Close()
'在窗體上添加一個(gè)DataGridView控件,在這個(gè)位置加一句代碼
DataGridView1.DataSource = oledbDataAdapter.Tables("gy_bingrenxx")
End Sub
Public Sub Main()
Dim allLeft As New List(Of Integer)()
For i As Integer = 0 To 99
allLeft.Add(i + 1)
Next
Dim r As New Random()
Dim [next] As Integer
Dim level As String
For i As Integer = 0 To 5
[next] = r.[Next]() Mod allLeft.Count
If i 3 Then
level = "Third"
ElseIf i 5 Then
level = "Second"
Else
level = "First"
End If
Console.WriteLine(level " level prize is: " allLeft([next]).ToString())
allLeft.RemoveAt([next])
Next
End Sub
只要在代碼中使用隨機(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ù)
vb6可以實(shí)現(xiàn)多線程,不過比較麻煩,vb.net完全支持多線程,請(qǐng)參見msdn.
至于vb6實(shí)現(xiàn)多線程請(qǐng)看CreateThread這個(gè)API函數(shù).以下有詳細(xì)方案:
用VB寫多線程程序用到的第一個(gè)API函數(shù)是CreateThread,這個(gè)函數(shù)的聲明如下:
Private Declare Function CreateThread Lib "kernel32" (ByVal lpThreadAttributes As Any, ByVal dwStackSize As Long, ByVal lpStartAddress As Long, lpParameter As Any, ByVal dwCreationFlags As Long, lpThreadId As Long)As Long
這個(gè)函數(shù)的返回值是線程的句柄,它的參數(shù)含義如下:
1.lpThreadAttributes:這個(gè)參數(shù)表明函數(shù)的返回句柄是否可被子進(jìn)程繼承,如果可被繼承,則指向一個(gè)SECURITY_ATTRIBUTES的結(jié)構(gòu),否則設(shè)為vbnull。
2.dwStackSize:這個(gè)參數(shù)設(shè)置線程的堆棧大小。
3.lpStartAddress:這個(gè)參數(shù)指明這個(gè)線程函數(shù)的起始地址。
4.lpParameter:這個(gè)參數(shù)是傳給線程函數(shù)的參數(shù)。
5.dwCreationFlags:這個(gè)參數(shù)設(shè)置當(dāng)線程創(chuàng)建時(shí)的初始狀態(tài),掛起,運(yùn)行等等。
6.lpThreadId:這個(gè)參數(shù)是待創(chuàng)建線程的ID號(hào)。
假設(shè)創(chuàng)建一個(gè)管理線程的類clsThreads,用類的一個(gè)公用函數(shù)Initialize來初始化線程,用ResumeThread和SuspendThread函數(shù)來激活線程,實(shí)現(xiàn)代碼如下:
Private Type udtThread
Handle As Long
Enabled As Boolean
End Type
Private uThread As udtThread
Private Const CREATE_SUSPENDED As Long = H4
Private Declare Function CreateThread Lib "kernel32" (ByVal lpThreadAttributes As Any, ByVal dwStackSize As Long, ByVal lpStartAddress As Long, lpParameter As Any, ByVal dwCreationFlags As Long, lpThreadId As Long) As Long
Private Declare Function ResumeThread Lib "kernel32" (ByVal hThread As Long) As Long
Private Declare Function SuspendThread Lib "kernel32" (ByVal hThread As Long) As Long
Private Declare Function TerminateThread Lib "kernel32" (ByVal hThread As Long, ByVal dwExitCode As Long) As Long
Public Sub Initialize(ByVal lpfnBasFunc As Long) '初始化線程
Dim lStackSize As Long, lCreationFlags As Long, lpThreadId As Long, lNull As Long
On Error Resume Next
lNull = 0 '創(chuàng)建一個(gè)空指針
lStackSize = 0 '0表示用exe的stack size
lCreationFlags = CREATE_SUSPENDED '表示初始化后先不激活,讓別人來激活
uThread.Handle = CreateThread(lNull, lStackSize, lpfnBasFunc, lNull, lCreationFlags, lpThreadId)
If uThread.Handle = lNull Then MsgBox "Create thread failed!"
End Sub
Public Property Get Enabled() As Boolean
On Error Resume Next
Enabled = uThread.Enabled
End Property
Public Property Let Enabled(ByVal vNewValue As Boolean)
On Error Resume Next
If vNewValue And (Not uThread.Enabled) Then
ResumeThread uThread.Handle '激活線程
uThread.Enabled = True
ElseIf uThread.Enabled Then
SuspendThread uThread.Handle
uThread.Enabled = False
End If
End Property
Private Sub Class_Terminate() '終止線程
On Error Resume Next
Call TerminateThread(uThread.Handle, 0)
End Sub
以上內(nèi)容在類模塊clsThreads中,有了它就可以在窗體中實(shí)現(xiàn)多線程了。下面以一個(gè)簡單的例子來說明如何創(chuàng)建多線程(以2個(gè)線程為例)。
在form1中添加picture1和picture2兩個(gè)圖片框,以及一個(gè)command1按鈕,在工程中添加一個(gè)bas模塊,該模塊的代碼如下:
Option Explicit
Private Declare Function GetTickCount Lib "kernel32" () As Long
Public Sub FlickerTop()
Static BgColor As Long
Dim lTick As Long, lCounter As Long
On Error Resume Next
For lCounter = 0 To 60000
BgColor = lCounter Mod 256
Form1.Picture1.BackColor = RGB(BgColor, 0, 0) '變化圖片框的顏色
lTick = GetTickCount
While GetTickCount - lTick 10 '延遲10個(gè)毫秒時(shí)間
Wend
Next
End Sub
Public Sub FlickerBottom()
Static BgColor As Long
Dim lTick As Long, lCounter As Long
On Error Resume Next
For lCounter = 0 To 60000
BgColor = lCounter Mod 256
Form1.Picture2.BackColor = RGB(0, BgColor, 0)
lTick = GetTickCount
While GetTickCount - lTick 10
Wend
Next
End Sub
最后在form1中用下面的代碼來創(chuàng)建兩個(gè)線程,
Option Explicit
Public myThreadTop As New clsThreads, myThreadBottom As New clsThreads
Private Sub Command1_Click()
On Error Resume Next
With myThreadTop
.Initialize AddressOf FlickerTop
.Enabled = True
End With
With myThreadBottom
.Initialize AddressOf FlickerBottom
.Enabled = True
End With
MsgBox "看看會(huì)有什么..."
Set myThreadTop = Nothing
Set myThreadBottom = Nothing
End Sub
網(wǎng)頁題目:vb.net抽獎(jiǎng)程序,vb抽獎(jiǎng)程序代碼
文章路徑:http://chinadenli.net/article48/heipep.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機(jī)、電子商務(wù)、微信公眾號(hào)、做網(wǎng)站、全網(wǎng)營銷推廣、用戶體驗(yàn)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)