You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB密码生成代码输出全重复,如何得到10个不重复随机密码

问题原因

你当前的代码仅在所有循环执行前生成了1次随机密码,后续向ListBox添加内容的循环只是重复插入了同一个已经生成好的字符串,所以才会出现所有输出完全重复的问题。同时你需要输出10个密码,还需要调整密码生成的数量参数,额外增加去重逻辑避免极低概率下的随机重复问题。

修改后完整代码

Dim numKeys As Integer = 10 ' 修改为需要输出的10个密码
Dim chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*"
Dim random = New Random()
Dim existedPwd As New HashSet(Of String) ' 用于去重的集合

ListBox1.Items.Clear() ' 先清空ListBox原有内容

While existedPwd.Count < numKeys
    Dim stringChars = New Char(7) {} ' 每次生成新密码都初始化字符数组
    For i As Integer = 0 To stringChars.Length - 1
        stringChars(i) = chars.Chars(random.Next(chars.Length))
    Next
    Dim finalString = New String(stringChars)
    ' 只有不存在的密码才会被加入集合,自动去重
    If existedPwd.Add(finalString) Then
        ListBox1.Items.Add(finalString)
    End If
End While

核心修改说明

  • 将单条密码的生成逻辑移入多密码生成的循环内部,保证每轮循环都会生成新的随机密码
  • 将密码生成数量numKeys从8改为10,匹配你需要输出10个密码的需求
  • 新增HashSet(Of String)类型的去重集合,利用HashSet元素唯一的特性,避免极端情况下随机算法生成重复密码的问题,确保最终输出的10个密码全部互不重复
  • 新增ListBox清空逻辑,避免多次运行时旧数据残留

内容的提问来源于stack exchange,提问作者Lider13

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 10:39:03