Ruby 生成随机字母的精妙代码

hilbert · 2013年03月05日 · 最后由 rc13520822803 回复于 2018年05月18日 · 11029 次阅读
('a'..'z').to_a.shuffle[0..7].join

从这里看来的 http://about.ac/rails-tutorial-2nd-cn/chapter1.html

不错,分享另外一个利用 shuffle 的代码,从哪儿看到的还真忘了~

# 随机排列字符串
class String
  def shuffle
    self.split('').shuffle.join
  end
end

puts "abcdefg".shuffle.inspect

学习了,之前一直用 random

SecureRandom.hex 4

#4 楼 @Saito

>> SecureRandom.hex 4
RDoc::RI::Driver::NotFoundError: SecureRandom

[*?a..?z].sample(8).join

shuffle 中文叫洗牌

#6 楼 @orzfly 这个屌,看都看不懂

有数字和大写的组合:['a'..'z','0'..'9',*'A'..'Z'].sample(8).join

看到这,想问问,一般订单号的生成策略是?我在项目中是采用时间 +8 位随机数。

#9 楼 @mclee 请问一下这个原理是什么,数组里面的星号和逗号都代表什么呢?

#11 楼 @mfb777 星号是展开吧。

#12 楼 @chenge 也就是把 range 展开成数组了,实际上是三个子数组。明白了,哈哈。

学习了,不错,正好用上。

但有一个问题,就是这样子就不会有重复的了,真随机的话会有重复的吧……

@hexawing 我觉得这就是你思想有误了啊,楼主生成的是 7 位的随机字母,重复来说概率问题。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号