隨機數的幾種方法

生成隨機數代碼:
one:

 '不重復數字
    Public Function ran2(ByVal num As Int16) As String
        
Dim s As String = "0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,P,Q,R,S,T,U,V,W,X,Y,Z"
        
Dim sz As String() = s.Split(","c)
        
Dim al = New ArrayList()
        
Dim i As Integer
        
For i = 0 To num - 1
            
If al.Count = 0 Then
                
Dim rd = New Random()
                
Dim a As Integer = rd.Next(035)
                al.Add(a)
            
Else
                
Dim c As Integer = 0
                
Dim isonly As Boolean = True

                
While isonly
                    
Dim rd = New Random()
                    
Dim b As Integer = rd.Next(035)
                    
If Me.isone(al, b) Then '判断唯一的函数
                        isonly = False
                        c 
= b
                    
End If
                
End While
                al.Add(c)
            
End If
        
Next i
        
Dim rand As String = ""
        
Dim j As Integer
        
For j = 0 To al.Count - 1

            rand 
+= sz(Int32.Parse(al(j).ToString()))
        
Next j
        
Return rand
    
End Function
 'ran2 

    
'下面还有一个判断唯一的函数
    Private Function isone(ByVal a As System.Collections.ArrayList, ByVal b As IntegerAs Boolean
        
Dim one As Boolean = True
        
Dim i As Integer
        
For i = 0 To a.Count - 1
            
If a(i).ToString() = b.ToString() Then
                one 
= False
                i 
= a.Count
            
End If
        
Next i
        
Return one
    
End Function
 'isone

 

two:

 

  '大寫小寫數字
    Public Function RandomPasswd() As String

        
Dim strPasswd As String = ""
        
Dim intNum As Integer = 0
        
Dim objRandom As Random
        
Dim intLength As Integer

        objRandom 
= New Random
        intLength 
= objRandom.Next(5+ 8
        
For i As Integer = 0 To intLength - 1
            intNum 
= objRandom.Next(3)
            
If intNum = 0 Then
                strPasswd 
+= Chr(objRandom.Next(10+ 48).ToString()
            
ElseIf intNum = 1 Then
                strPasswd 
+= Chr(objRandom.Next(26+ 65).ToString()
            
Else
                strPasswd 
+= Chr(objRandom.Next(26+ 97).ToString()
            
End If
        
Next

        
Return strPasswd
    
End Function

將隨機數以image顯示:
one:增加噪音等安全系數
Private Sub CreateCheckCodeImage(ByVal checkCode As String)
        
If checkCode Is Nothing Or checkCode.Trim() = [String].Empty Then
            
Return
        
End If
        
Dim image As New System.Drawing.Bitmap(CInt(Math.Ceiling((checkCode.Length * 15.5))), 30)
        
Dim g As Graphics = Graphics.FromImage(image)

        
Try
            
'生成随机生成器
            Dim random As New Random()

            
'清空图片背景色
            g.Clear(Color.White)

            
'画图片的背景噪音线
            Dim i As Integer
            
For i = 0 To 24
                
Dim x1 As Integer = random.Next(image.Width)
                
Dim x2 As Integer = random.Next(image.Width)
                
Dim y1 As Integer = random.Next(image.Height)
                
Dim y2 As Integer = random.Next(image.Height)

                g.DrawLine(
New Pen(Color.Silver), x1, y1, x2, y2)
            
Next i

            
Dim font = New System.Drawing.Font("Arial"14, System.Drawing.FontStyle.Bold Or System.Drawing.FontStyle.Italic)
            
Dim brush As New System.Drawing.Drawing2D.LinearGradientBrush(New Rectangle(00, image.Width, image.Height), Color.Blue, Color.DarkRed, 1.2F, True)
            g.DrawString(checkCode, font, brush, 
22)

            
'画图片的前景噪音点
            ' Dim i As Integer
            For i = 0 To 99
                
Dim x As Integer = random.Next(image.Width)
                
Dim y As Integer = random.Next(image.Height)

                image.SetPixel(x, y, Color.FromArgb(random.Next()))
            
Next i

            
'画图片的边框线
            g.DrawRectangle(New Pen(Color.Silver), 00, image.Width - 1, image.Height - 1)

            
Dim ms As New System.IO.MemoryStream()
            image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif)
            Response.ClearContent()
            Response.ContentType 
= "image/Gif"
            Response.BinaryWrite(ms.ToArray())
        
Finally
            g.Dispose()
            image.Dispose()
        
End Try
    
End Sub
 '

two:無噪音,正常圖片輸出
Private Sub ValidateCode(ByVal VNum As String)
        
Dim Img As Bitmap = Nothing
        
Dim g As Graphics = Nothing
        
Dim ms As MemoryStream = Nothing

        
Dim gheight As Integer = VNum.Length * 15
        Img 
= New Bitmap(gheight, 30)
        g 
= Graphics.FromImage(Img)
        
'背景颜色 
        g.Clear(Color.White)
        
'文字字体 
        Dim f As New Font("Arial Black"11)
        
'文字颜色 
        Dim s As New SolidBrush(Color.Black)
        g.DrawString(VNum, f, s, 
33)
        ms 
= New MemoryStream()
        Img.Save(ms, ImageFormat.Jpeg)
        Response.ClearContent()
        Response.ContentType 
= "image/Jpeg"
        Response.BinaryWrite(ms.ToArray())

        g.Dispose()
        Img.Dispose()
        Response.End()
    
End Sub
posted @ 2006-11-22 09:06  Nina  阅读(369)  评论(0)    收藏  举报