(Linux)shufコマンドでナンバーズ3の番号を決める

6-3.ランダムに並び替え

『リアル鬼ごっこ』(2015)
主演 トリンドル玲奈、篠田麻里子、真野恵里菜。
怖い映画はほとんど見ませんが、パラレルワールドものと聞き、見てみました。思ったよりも怖くなかったです。

全体的に怖くわないんですけど、冒頭のシーンには驚きました。そこだけはトラウマです。

ある世界では、枕の羽根の落ちる位置も決まっているらしい。運ではなくて、すべて決まっていることのようです。

そういう世界では、宝くじも当たる人はきっと決まっているのでしょうけど、当たるか外れるかわからないから面白いんですよね。

shufコマンドは、テキストをシャッフルしてくれるコマンドですが、来週月曜から10日間購入するナンバーズ3の番号を決めてもらおうと思います。
shuf単体でも連番を生成してシャッフル、かつ出力数も指定できます。

takk~$ shuf -i0-999 -n3
896
259
864

ただし、この方法だと3桁に満たない数に0が付与されません。

takk~$ shuf -i0-999 -n3
38
355
753
takk~$ 

000〜999の数字を指定するには、他コマンドとの組み合わせ。

takk~$ seq -f "%03g" 0 999 | shuf -n3
498
025
487
takk~$ 

または、ブレース展開で指定。

takk~$ shuf -n3 -e {000..999}
148
284
088
takk~$ 

さて、今週末から継続回数10回、同一番号で購入しようとしていますが、
今から番号を決めておきます。たくさん番号を生成して、一番多い3桁の数に決めます。

まずは、一億回番号を生成します。

takk~$ shuf -r -n100000000 -e {000..999} > a
takk~$ ls -l a
-rw-r--r-- 1 takk takk 400000000  9月 13 22:13 a
takk~$ 

では、ソートしてランキングしてみます。上位10位を表示します。
一億行は多いので、時間も計測してみましょう。

takk~$ time sort < a | uniq -c | sort -r | head
 100989 788
 100864 612
 100784 863
 100778 983
 100763 869
 100755 520
 100746 956
 100741 808
 100722 663
 100717 189

real	7m10.527s
user	11m58.468s
sys	0m3.996s
takk~$ 

788に決まりました。

コメント

タイトルとURLをコピーしました