VB.NET生成随机串或随机数字的方法总结


本文摘自PHP中文网,作者小葫芦,侵删。

本文一共介绍了5种生成随机数方式,具体如下:

第一种:转载的方法

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

Public Enum stringtype

    allstring = 1    '大小写字母

    allnumic = 2    '数字

    str_num = 3    '大小写字母+数字

    str_upper = 4    '大写字母

    str_lower = 5 '大写字母

  End Enum

  Function GenerateRandom(ByVal Length As Integer, ByVal s As stringtype) As String

    Dim strtemp As String = ""

    Dim constant() As String = Nothing

    Select Case s

      Case stringtype.allnumic

        strtemp = "0,1,2,3,4,5,6,7,8,9"

        constant = strtemp.Split(",")

      Case stringtype.allstring

        strtemp = "a,b,c,d,e,f,g,h,i,j,k,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,D,G,H,I,J,K,L,M,N,P,Q,R,S,T,U,V,W,X,X,Y,Z"

        constant = strtemp.Split(",")

      Case stringtype.str_lower

        strtemp = "a,b,c,d,e,f,g,h,i,j,k,m,n,o,p,q,r,s,t,u,v,w,x,y,z"

        constant = strtemp.Split(",")

      Case stringtype.str_num

        strtemp = "a,b,c,d,e,f,g,h,i,j,k,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,D,G,H,I,J,K,L,M,N,P,Q,R,S,T,U,V,W,X,X,Y,Z,0,1,2,3,4,5,6,7,8,9"

        constant = strtemp.Split(",")

      Case stringtype.str_upper

        strtemp = "A,B,C,E,F,D,G,H,I,J,K,L,M,N,P,Q,R,S,T,U,V,W,X,Y,Z"

        constant = strtemp.Split(",")

    End Select

    Dim NewRandom As System.Text.StringBuilder = New System.Text.StringBuilder(Length)

    Dim rd As Random = New Random()

    Dim i As Integer

    For i = 0 To Length - 1 Step i + 1

      NewRandom.Append(constant(rd.Next(constant.Length - 1)))

    Next

    Return NewRandom.ToString()

  End Function

第二种:网上查找

1

2

3

4

5

Public Function GetOAuthNonce() As String ' 得到随机值

    Dim result As String = System.Guid.NewGuid().ToString()

    result = result.Replace("-", "")

    Return result.Substring(0, 10)

  End Function

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

Public Function RandCode(ByVal n As Integer) As String

    Dim arrChar As Char() = New Char() {"a"c, "b"c, "d"c, "c"c, "e"c, "f"c, _

                      "g"c, "h"c, "i"c, "j"c, "k"c, "l"c, _

                      "m"c, "n"c, "p"c, "r"c, "q"c, "s"c, _

                      "t"c, "u"c, "v"c, "w"c, "z"c, "y"c, _

                      "x"c, "0"c, "1"c, "2"c, "3"c, "4"c, _

                      "5"c, "6"c, "7"c, "8"c, "9"c, "A"c, _

                      "B"c, "C"c, "D"c, "E"c, "F"c, "G"c, _

                      "H"c, "I"c, "J"c, "K"c, "L"c, "M"c, _

                      "N"c, "Q"c, "P"c, "R"c, "T"c, "S"c, _

                      "V"c, "U"c, "W"c, "X"c, "Y"c, "Z"c}

    Dim num As New StringBuilder()

    Dim rnd As New Random(DateTime.Now.Millisecond)

    For i As Integer = 0 To n - 1

      num.Append(arrChar(rnd.[Next](0, arrChar.Length)).ToString())

    Next

    Return num.ToString()

  End Function

第三种:原来是C#转换

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

Public Function RandCode(ByVal n As Integer) As String

    Dim arrChar As Char() = New Char() {"a"c, "b"c, "d"c, "c"c, "e"c, "f"c, _

                      "g"c, "h"c, "i"c, "j"c, "k"c, "l"c, _

                      "m"c, "n"c, "p"c, "r"c, "q"c, "s"c, _

                      "t"c, "u"c, "v"c, "w"c, "z"c, "y"c, _

                      "x"c, "0"c, "1"c, "2"c, "3"c, "4"c, _

                      "5"c, "6"c, "7"c, "8"c, "9"c, "A"c, _

                      "B"c, "C"c, "D"c, "E"c, "F"c, "G"c, _

                      "H"c, "I"c, "J"c, "K"c, "L"c, "M"c, _

                      "N"c, "Q"c, "P"c, "R"c, "T"c, "S"c, _

                      "V"c, "U"c, "W"c, "X"c, "Y"c, "Z"c}

    Dim num As New StringBuilder()

    Dim rnd As New Random(DateTime.Now.Millisecond)

    For i As Integer = 0 To n - 1

      num.Append(arrChar(rnd.[Next](0, arrChar.Length)).ToString())

    Next

    Return num.ToString()

  End Function

第四种:利用VB6转换

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

Function makeRand(ByVal maxLen As Integer) As String '生成签名时用随机串

    Dim strNewPass As String = vbNullString

    Dim lower As Long

    Dim whatsNext As Long

    Dim upper As Long

    Dim intCounter As Long

    Randomize()

    For intCounter = 1 To maxLen

      whatsNext = Int((1 - 0 + 1) * Rnd() + 0)

      If whatsNext = 0 Then

        upper = 122

        lower = 100

      Else

        upper = 57

        lower = 48

      End If

      strNewPass = strNewPass & Chr(Int((upper - lower + 1) * Rnd() + lower))

    Next

    makeRand = strNewPass

  End Function

第五种:直接用VB.NET函数

1

2

Dim rand As Random = New System.Random(10)‘这里10就代表是10为

 Debug.Print(rand.Next().ToString)

相关阅读 >>

VB.NET生成随机串或随机数字的方法总结

详解VB.NET操作注册表【增加,修改,删除,查询】的方法分析

解析c#.net 和VB.NET的区别

VB.NET和vb的区别是什么?

c#中VB.NET给word文档添加/撤销书签的实例

更多相关阅读请进入《VB.NET》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...