ruby - 不幸的是,小型随机字符串生成器有时会失败。请帮我修复它

标签 ruby algorithm random

从 StackOverflow 的一些回答中,我有一个简洁的小函数来生成一个仅包含 a-z 和 0-9 字符的 10 个字符的字符串: rand(36**10).to_s(36)

问题是它有时会失败并且只生成 9 个字符。但我真的很喜欢它的轻松和速度。有什么建议如何修复它,以便我可以确保它始终生成恰好 10 个字符? (没有任何循环或检查。)

最佳答案

当您随机生成一个小于 369 的数字时,它最终会成为一个 9 个字符的字符串。向左填充零:

rand(36**10).to_s(36).rjust(10, "0")

示例:

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"

关于ruby - 不幸的是,小型随机字符串生成器有时会失败。请帮我修复它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4411582/

相关文章:

mysql - 用随机元音替换 mysql 列中的所有元音

ruby-on-rails - Rails - 如何运行 cmd 行脚本并实时显示输出?

ruby-on-rails - rails : get a specific number of random records

ruby - 无法在 rbenv 环境中切换 gem 版本

algorithm - 检测给定图片是否为人脸的方法是什么?

algorithm - Neo4j使用的访问算法

algorithm - T9类型字典背后的数据结构

java - 数组返回 null .. 生成随机单词

ruby - 在 Ruby 中将 SVG 转换为 PNG

ruby - pik 没有列出 ruby​​ 1.9.3