excel - 生成密码
问题描述
我需要生成不重复且不具有相同连续数字的密码,除了长度为 8 位之外,只有数字。所有这一切都在 Visual Basic 中用于 Excel 应用程序。
解决方案
好吧,如果你只想要数字,0 到 9 之间的随机数可以通过Int(Rnd() * 10)
.
Int() 向下取整,Rnd() 返回一个介于 0 和 <1 之间的数字。
如果您然后循环该 8 次并将数字彼此相加(使用&
而不是+
)并If
检查最后一个添加的值到我们要添加的值,那么您将拥有一个 8 位数字,没有重复数字。
然后,您只需将它们打印或保存在某处。
就像是:
Sub random()
Dim test As Long, ran As Long, i As Long, j As Long
For j = 1 To 500 '- Amount of numbers to print
ran = 0
For i = 1 To 8 '- Length of random number
test = Int(Rnd() * 10)
If test = Right(ran, 1) Then
i = i - 1 '-Same number, try again
Else
ran = ran & test '-New number, add this
End If
Next i
Range("A" & Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row).Value = ran '- Print on last row of column "A"
Next j
Range("A:A").RemoveDuplicates Columns:=1 '- Remove duplicates from column "A"
End Sub
然后,这将打印 500 个随机 8 位数字,从A2
或 column 中的最后一个空单元格开始A
。然后继续删除重复项。
您可以每次检查重复项,从而确保您最终得到指定数量的数字。但它非常慢,而且获得重复的机会非常小(10.000 个数字的测试运行对我来说只有一个重复)。
推荐阅读
- python - RuntimeError:输入、输出和索引必须在当前设备上。(fill_mask("随机文本
.") - nginx - Nginx - 为什么 nginx 使用这么多 CPU 和内存?怎么修?
- java - Java Telegram bot - JSON 到 InlineKeyboardMarkup
- graphing - 在 Pari-GP 中绘制函数的资源
- file - 我如何使用 Ansible 调试许多文件中的内容
- cmake - 构建 wxwidget 时遇到问题
- python - ValueError: invalid literal for int() with base 10: '$16.10' (我解决了这个问题,我只需要一些帮助来解除我的问题禁令)
- php - 如何将ajax上的数据传递给codeigniter控制器
- python - 如何在 python 中创建 if/then 行
- python - 如果 df['column'] 中的子字符串:将值添加到另一列