如何修復此代碼,以便以小寫字母生成唯一的隨機字母和數字?用小寫字母和數字生成唯一的隨機字符串
api_string = (0...32).map{65.+(rand(25)).chr}.join
目前,它只生成字母。
如何修復此代碼,以便以小寫字母生成唯一的隨機字母和數字?用小寫字母和數字生成唯一的隨機字符串
api_string = (0...32).map{65.+(rand(25)).chr}.join
目前,它只生成字母。
如果你正在使用紅寶石1.9.2你可以使用SecureRandom:
irb(main):001:0> require 'securerandom'
=> true
irb(main):002:0> SecureRandom.hex(13)
=> "5bbf194bcf8740ae8c9ce49e97"
irb(main):003:0> SecureRandom.hex(15)
=> "d2413503a9618bacfdb1745eafdb0f"
irb(main):004:0> SecureRandom.hex(32)
=> "432e0a359bbf3669e6da610d57ea5d0cd9e2fceb93e7f7989305d89e31073690"
這是很方便的對於簡單的需求,但alpha範圍只有af,所以生成的字符串的安全性/複雜性不如它可能高。 – 2013-02-06 10:20:57
最好使用base64,它也內置在:SecureRandom.base64(16).gsub(/ = + $ /,'') – 2013-05-24 04:34:25
對於API密鑰不是問題,但也有方便的urlsafe_base64方法:SecureRandom.urlsafe_base64 (16)=>「XpMnLfc3FySd-C4V2Ipxag」 – 2013-08-25 13:03:42
CHARS = (?0..?9).to_a + (?a..?z).to_a
api_string = 32.times.inject("") {|s, i| s << CHARS[rand(CHARS.size)]}
下面是做這件事:
POSSIBLE = (('A'..'Z').to_a + (0..9).to_a)
api_string = (0...32).map { |n| POSSIBLE.sample }.join
如果您有可用,你也可以這樣做是爲了一個API密鑰般串活性支持:
ActiveSupport::SecureRandom.hex(32)
個所有的字母和數字,這數字是如何在基地36
api_string = Array.new(32){rand(36).to_s(36)}.join
你爲什麼認爲它永遠是獨一無二的? – user1735921 2017-09-28 10:07:12
我從那裏忘了代表,但今天上午
l,m = 24,36
rand(m**l).to_s(m).rjust(l,'0')
從0創建隨機數我讀過這個莫名其妙功率(36,24),然後將其轉換到基座-36串(即0-9和AZ)
這比steenslag的https://gist.github.com/cameron-martin/a7a91f0bc952e8a5c795 – 2014-06-12 02:41:27
更快除了'rand(36 ** len).to_s(36).length == len'並非總是如此,所以你將必須做'蘭特(36 ** len).to_s(36).rjust(len,'0')' – 2014-06-12 02:54:01
好!我剛剛編輯了答案:3 – Kokizzu 2014-06-12 06:14:44
((('a'..'z').to_a + (0..9).to_a)*3).shuffle[0,(rand(100).to_i)].join
與rand(n)
其中替換是你想要的字符串的最大長度。
使用紅寶石語言的SecureRandom。
require 'securerandom' randomstring = SecureRandom.hex(5)
它將生成N * 2隨機字符串包含「0-9「和‘AF’
8.times.map { [*'0'..'9', *'a'..'z'].sample }.join
Process.clock_gettime(Process::CLOCK_REALTIME, :nanosecond).to_s(36)
範圍爲數字爲48〜57。這些必須包含在你的範圍內。 – soandos 2011-05-11 15:41:28
感謝您的回答。你能舉一個例子,我可以把它標記爲正確的嗎? – donald 2011-05-11 15:43:50
[在Ruby中如何最好地生成一個隨機字符串]可能的重複(http://stackoverflow.com/questions/88311/how-best-to-generate-a-random-string-in-ruby) – user 2015-03-25 08:20:04