swa*_*pab 6 ruby ruby-on-rails-3
尝试使用SecureRandom类rails生成随机数字.我们可以使用SecureRandom.hex创建一个随机数,其中只包含数字而不包含字母.
例如:
代替
SecureRandom.hex(4)
=> "95bf7267"
Run Code Online (Sandbox Code Playgroud)
它应该给
SecureRandom.hex(4)
=> "95237267"
Run Code Online (Sandbox Code Playgroud)
查看SecureRandom的api:http://rails.rubyonrails.org/classes/ActiveSupport/SecureRandom.html
我相信你正在寻找一种不同的方法:#random_number.
SecureRandom.random_number(a_big_number)
Run Code Online (Sandbox Code Playgroud)
由于#hex返回一个十六进制数,因此要求一个只包含数字字符的随机结果是不常见的.
对于基本用例,使用#rand非常简单.
rand(9999)
Run Code Online (Sandbox Code Playgroud)
编辑:
我不知道一个库生成一个指定长度的随机数,但写一个似乎很简单.这是我的传球:
def rand_by_length(length)
rand((9.to_s * length).to_i).to_s.center(length, rand(9).to_s).to_i
end
Run Code Online (Sandbox Code Playgroud)
#rand_by_length方法采用指定长度的整数作为参数,并尝试根据长度生成随机数的最大数字.String#center用于使用随机数字符填充缺失的数字.最坏的情况是为指定长度的每个数字调用#rand.这可能符合您的需求.
| 归档时间: |
|
| 查看次数: |
4893 次 |
| 最近记录: |