Kiểm tra các api cho SecureRandom: http://rails.rubyonrails.org/classes/ActiveSupport/SecureRandom.html
Tôi tin rằng bạn đang tìm kiếm một phương pháp khác: #random_number.
SecureRandom.random_number(a_big_number)
Vì #hex trả về số thập lục phân, sẽ không bình thường khi yêu cầu kết quả ngẫu nhiên chỉ chứa các ký tự số.
Đối với trường hợp sử dụng cơ bản, đơn giản là đủ để sử dụng #rand.
rand(9999)
được sửa đổi:
Tôi không biết của một thư viện mà tạo ra một số ngẫu nhiên có độ dài nhất định, nhưng có vẻ như đơn giản, đủ để viết một. Đây là đường chuyền của tôi tại địa chỉ:
def rand_by_length(length)
rand((9.to_s * length).to_i).to_s.center(length, rand(9).to_s).to_i
end
Phương thứC#rand_by_length lấy một số nguyên chỉ định chiều dài và cố gắng tạo số chữ số tối đa ngẫu nhiên dựa trên độ dài. Trung tâm chuỗi # được sử dụng để đệm các số bị thiếu với các ký tự số ngẫu nhiên. Trường hợp xấu nhất gọi #rand cho mỗi chữ số có độ dài được chỉ định. Điều đó có thể phục vụ nhu cầu của bạn.
Cám ơn chỉnh trên "số thập lục" Tôi muốn giải thích thêm, tôi đã thực sự tìm kiếm một số ngẫu nhiên với độ dài cụ thể (cho phép s ay 8), hex không hạn chế chiều dài để tự hỏi một cái gì đó tương tự, SecureRandom có thể có mà sẽ tạo ra số chỉ. SecureRandom.random_number (n) có lẽ sẽ không cho phép điều này? [random_number] (http://rails.rubyonrails.org/classes/ActiveSupport/SecureRandom.html#M000733) – swapab
Cập nhật câu trả lời của tôi dựa trên nhận xét của bạn. – rossta
Đó là Cool ... Cảm ơn rất nhiều cho mã đó ... – swapab