ランダム
Array#sample
urandom
パスワード生成

ランダムな数字四桁を生成するワンライナーたち

More than 1 year has passed since last update.

映画をよく観ます。

最近の映画館は、チケットをネット予約できるのがありがたいのですが、友人とよく行く、

などでは、予約時にチケットを発券するのに使う数字四桁のパスワードを設定する必要があります。

これを毎回考えるのがめんどくさい。いつも同じパスワードでいいじゃない、と言われるかもしれませんが、そこはそれ、いちおうシステム運用屋ですから。

で、調べ物の合間にチケット予約する時にパスワードを生成するために、OSXの ~/.bash_profile, Ubuntu の ~/.bashrc に仕込んでいるワンライナーたち。

alias rn4="cat /dev/urandom | LC_CTYPE=C tr -dc '0-9' | fold -w 4 | head -n 1"

alias rn4rb='ruby -e "puts (0..9).to_a.sample(4).join"'
alias rn4py='python -c "import random; print \"\".join(random.sample(map(str, range(10)), 4))"'
alias rn4ps='powershell -Command "(Get-Random -InputObject (0..9) -Count 4) -join \"\" "'


rn4

OSX では、LC_CTYPE=C が必要だが、Ubuntu では不要。この方法だと四つのうちに同じ数字が出ることもある。

rn4rb

(0..9).to_a は、[*0..9] と書いてもいいわけで。四つの数字に同じものは出ない。

rn4py

ruby と同じロジックを書いても、python では括弧が多重しがちになるなのがちょといや。

rn4ps

仕事で powershell をよく使うので、Macbook や Ubuntu にも PowerShell をインストールしてある。作ってみたが非常に遅い。

いちばん軽く動くので、結局、/dev/urandom を使った rn4 ばかり使っているような。