みんなのちからになりたい

コピペでブログラムつくっていきたい

rubyでロト7

ロト7が始まったそうなので、なにも考えずランダムに7個の数字を求めるのをやってみた。

みずほ銀行 宝くじコーナー:ロト7

「ロト7(ロトセブン)」は、1~37の37個の数字の中から、異なる7個の数字を選んで購入する、「数字選択式宝くじ」です。2013年4月より全国で発売されました。1等の当せん金は最高4億円(理論値)。ロト6と同じく、当せん金の繰り越しが行われる「キャリーオーバー制」を採用しています。キャリーオーバーが発生した場合、1等の当せん金は最高8億円となります。価格は1口300円です。1年中、原則毎日、午前8時から午後8時まで(年末年始を除く)、抽せん日(金曜日)は午後6時30分まで、数字選択式宝くじ売り場で購入することができます。

ロト6は1~43なのでrangeは減ったけど数は増えたってことっぽい。
確率はロト6が1/6,096,454に対し、ロト7は1/10,295,472なので約1.6倍になってる。
それより、ロト6は1口200円だったので1シート買って千円だったけどロト7は1口300円なので1シート買うと1500円になるため気軽に買えなくなる。

というわけでrubyでこれをなにも考えずランダムで求めると1行で済んだ。すごい。

$ irb
irb(main):001:0> Array(1..37).shuffle.first(7).sort
=> [1, 4, 12, 14, 16, 27, 29]
irb(main):002:0> Array(1..37).shuffle.first(7).sort
=> [2, 11, 18, 20, 26, 29, 34]
irb(main):003:0> Array(1..37).shuffle.first(7).sort
=> [3, 8, 16, 18, 26, 28, 30]
irb(main):004:0> Array(1..37).shuffle.first(7).sort
=> [2, 19, 25, 28, 32, 33, 37]
irb(main):005:0> Array(1..37).shuffle.first(7).sort
=> [2, 9, 20, 26, 27, 29, 33]
irb(main):006:0>

この1行で4億当てて伝説になりたい。

追記:
id:nekovaさんにもっと短いの教えてもらった。

Array(1..37).sample(7).sort

短くてシンプル。
これで伝説にまた近づいた気がする。