遗憾的是,有时会失败的小随机字符串生成器 请帮我修理一下

Zar*_*doz 2 ruby random algorithm

从一些StackOverflow回答我有一个简洁的小函数来生成一个只有az和0-9字符的10个字符串: rand(36**10).to_s(36)

问题是它有时会失败并且只生成9个字符.但我真的很喜欢它的简易性和速度.有任何建议如何解决它,以便我可以确定它总是生成10个字符?(没有任何循环或检查.)

Mar*_*off 5

当您随机生成小于36 9的数字时,它最终会成为9个字符的字符串.左键用零填充:

rand(36**10).to_s(36).rjust(10, "0")
Run Code Online (Sandbox Code Playgroud)

例:

irb(main):018:0> (36**9).to_s(36)
=> "1000000000"
irb(main):019:0> (36**9 - 1).to_s(36)
=> "zzzzzzzzz"
irb(main):020:0> (36**5).to_s.rjust(10, "0")
=> "0060466176"
Run Code Online (Sandbox Code Playgroud)