如何在Julia中生成随机字母数字字符串?

6

我正在尝试使用以下代码在Julia中生成12个字符的字母数字字符串:
a)
an = randstring(rand(Bool) ? ('A':'Z') : ('0':'9'), 12)
b)


请注意,此代码将根据随机布尔值选择字母或数字。
an = "" 
for i in [1:12]
    an *= randstring(rand(Bool) ? ('A':'Z') : ('0':'9'))
end

但两者都只提供完整的12位数字或12个字母,而不是它们的组合。

请指导我生成12个字母数字字符串的组合。


2
请注意,for i in [1:12]for i in 1:12的含义完全不同。您确定这是您的意图吗? - DNF
1个回答

9

如果您不介意使用大小写字母,可以简单地调用randstring(12)

julia> using Random

julia> randstring(12)
"0IPrGg0JVONT"

julia> randstring(12)
"EB5dhw4LVno7"

如果您只想要大写字母(和数字),那么您需要传递一个只包含大写字母和数字的集合给 randstring,您可以通过 ['A':'Z'; '0':'9'] 实现:

julia> randstring(['A':'Z'; '0':'9'], 12)
"ASZQAT5YX3OL"

julia> randstring(['A':'Z'; '0':'9'], 12)
"FEV5HTGMLQ6X"

最后,注意您可以将字符集合提供为字符串:

julia> randstring("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", 12)
"ASZQAT5YX3OL"

函数内的Random.seed!(0)会返回相同的随机字母数字字符串! - AVA
3
不要在你的函数内部放置 Random.seed!(0)。我只是为了让你能够准确地复制我的答案中显示的结果,才使用了这个语句。 - Cameron Bieganek
2
@AVA,如果你还不知道随机数种子的解释,请参阅https://en.wikipedia.org/wiki/Random_seed。 - Cameron Bieganek
我从示例中删除了 Random.seed!(0),因为无论如何,在 Julia 版本之间,随机数生成都不能保证稳定。 - Cameron Bieganek
randstring('A':'Z', 2)同样有效。请注意,没有;randstring(['A':'Z'], 2)会导致错误。 - Thayakorn Rakwetpakorn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接