Foxtable(狐表)用户栏目专家坐堂 → [求助]生成的随机数全是英文字母?


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

主题:[求助]生成的随机数全是英文字母?

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


加好友 发短信
等级:三尾狐 帖子:712 积分:5553 威望:0 精华:0 注册:2019/11/14 9:36:00
[求助]生成的随机数全是英文字母?  发帖心情 Post By:2023/7/30 21:48:00 [只看该作者]

生成的随机数全是英文字母?

Rand.NextString(6)
这样生成的随机数有字母有数字,是否有更简单的方法让生成的随机数全是英文字母?

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


加好友 发短信
等级:超级版主 帖子:107135 积分:544918 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/7/30 21:59:00 [只看该作者]

把所有字母放到一个字符串里,随机从这个字符串里取6个字符

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


加好友 发短信
等级:六尾狐 帖子:1265 积分:7838 威望:0 精华:4 注册:2017/12/31 14:53:00
  发帖心情 Post By:2023/7/30 23:27:00 [只看该作者]

chatgpt回复

要在VB.NET中生成指定长度的纯字母的随机字符串,可以使用随机数生成器和字符集来实现。下面是一个示例代码,它将生成一个指定长度的纯字母随机字符串:

```vb.net
Imports System.Text
Imports System.Security.Cryptography

Module Module1
    Sub Main()
        Dim length As Integer = 10 ' 指定字符串长度
        Dim randomString As String = GenerateRandomString(length)
        Console.WriteLine(randomString)
    End Sub

    Private Function GenerateRandomString(ByVal length As Integer) As String
        Const chars As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
        Dim result As New StringBuilder(length)
        Dim rng As New RNGCryptoServiceProvider()
        Dim data(length - 1) As Byte

        rng.GetBytes(data)

        For i As Integer = 0 To length - 1
            Dim rndIndex As Integer = data(i) Mod chars.Length
            result.Append(chars(rndIndex))
        Next

        Return result.ToString()
    End Function
End Module
```

这个代码使用了 `RNGCryptoServiceProvider` 类来生成安全的随机字节序列,然后根据字节序列中的值从字符集中选择字符来构建随机字符串。字符集 `chars` 包含所有的大写字母和小写字母。

请注意,由于 `RNGCryptoServiceProvider` 生成的是真正的随机字节,因此生成的随机字符串是高度随机的,并且比简单的伪随机算法更安全。

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


加好友 发短信
等级:三尾狐 帖子:712 积分:5553 威望:0 精华:0 注册:2019/11/14 9:36:00
  发帖心情 Post By:2023/7/31 7:45:00 [只看该作者]

谢谢chen37280600
谢谢蓝总!
明白了!

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


加好友 发短信
等级:三尾狐 帖子:712 积分:5553 威望:0 精华:0 注册:2019/11/14 9:36:00
  发帖心情 Post By:2023/7/31 8:22:00 [只看该作者]

代码如下:

Dim x As String
Dim zm As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
For i As Integer = 1 To 6
    Dim rn As Integer = Rand.Next(0, 51)
    x += zm.Chars(rn)
Next
Output.Show(x)

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


加好友 发短信
等级:三尾狐 帖子:712 积分:5553 威望:0 精华:0 注册:2019/11/14 9:36:00
  发帖心情 Post By:2023/7/31 8:28:00 [只看该作者]

 打包成自定义函数
‘函数名RandLetter
Dim x As String
Dim zm As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
For i As Integer = 1 To Args(0)
    Dim rn As Integer = Rand.Next(0, 51)
    x += zm.Chars(rn)
Next
Return x

调用
Dim x As String = Functions.Execute("RandLetter", 10) ’第一个参数是字母随机数的位数
Output.Show(x)

 回到顶部