Foxtable(狐表)用户栏目专家坐堂 → 新手请教:如何随机生成汉字??


  共有2101人关注过本帖树形打印复制链接

主题:新手请教:如何随机生成汉字??

帅哥哟,离线,有人找我吗?
lmlptj
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:455 积分:3756 威望:0 精华:0 注册:2012/2/8 14:19:00
新手请教:如何随机生成汉字??  发帖心情 Post By:2015/12/11 17:25:00 [只看该作者]

Rand.Next() '生成一个随机整数
Dim
Val2 As Integer = Rand.Next(100) '生成0到100之间的随机整数
Dim
Val3 As Integer = Rand.Next(200,300)
'生成200到300之间的随机整数

如何随机生成指定数目的汉字呢???

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/12/11 18:50:00 [只看该作者]

mark 生成随机汉字

 

 

全局代码

 

Public Function CreateCode(strlength As Integer) As String
Dim str As String
'定义一个字符串数组储存汉字编码的组成元素
Dim r As String() = {"0", "1", "2", "3", "4", "5", _
"6", "7", "8", "9", "a", "b", _
"c", "d", "e", "f"}
'

'每循环一次产生一个含两个元素的十六进制字节数组,并将其放入bject数组中
'         每个汉字有四个区位码组成
'         区位码第1位和区位码第2位作为字节数组第一个元素
'         区位码第3位和区位码第4位作为字节数组第二个元素
'

For i As Integer = 0 To strlength - 1
    '区位码第1位
    Dim r1 As Integer =  Rand.[Next](11, 14)
    Dim str_r1 As String = r(r1).Trim()
    '区位码第2位
    '更换随机数发生器的种子避免产生重复值
    Dim r2 As Integer
    If r1 = 13 Then
        r2 =  Rand.[Next](0, 7)
    Else
        r2 =  Rand.[Next](0, 16)
    End If
    Dim str_r2 As String = r(r2).Trim()
    '区位码第3位
    Dim r3 As Integer =  Rand.[Next](10, 16)
    Dim str_r3 As String = r(r3).Trim()
    '区位码第4位
    Dim r4 As Integer
    If r3 = 10 Then
        r4 =  Rand.[Next](1, 16)
    ElseIf r3 = 15 Then
        r4 =  Rand.[Next](0, 15)
    Else
        r4 =  Rand.[Next](0, 16)
    End If
    Dim str_r4 As String = r(r4).Trim()
    '定义两个字节变量存储产生的随机汉字区位码
    Dim byte1 As Byte = Convert.ToByte(str_r1 & str_r2, 16)
    Dim byte2 As Byte = Convert.ToByte(str_r3 & str_r4, 16)
    '将两个字节变量存储在字节数组中
    Dim str_r As Byte() = New Byte() {byte1, byte2}
    Dim gb As Encoding = Encoding.GetEncoding("gb2312")
    str &= gb.GetString(str_r)
Next

Return str
End Function

 

调用代码

 

msgbox(CreateCode(20))


 回到顶部