まったくの初心者がVBAに挑戦してミニロト予想プログラムを作った

エクセルの画面
Excel 儲存格 | 利用 Range 物件標定一組儲存格,再以相對座標方式取得所參照的儲存格。 | Kenming Wang | Flickr

今回はVBAでミニロト予想をしてみました。

最近は大学の授業の忙しさになんとかひついっている大学生です。

授業数が多いというわけではなく、レポートや課題の数が増えそのうえ質も求められるようになってきたので、今までよりは慎重に取り組むようになりました。グラフのタイトルのつけ忘れから、しっかりと考察ができたか、誤差を考慮しどのようにしたら数なくできるかなど、考えることがいっぱい出てきました。

忙しくなれば人は楽な方向を探し始めます

僕自身も毎回データうってグラフ作っての作業に退屈していたので楽な方法を探しました。またこんな逸話があります。

「あの発明王エジソンの最初の発明は自動さぼり機で

退屈な仕事を自動で行い自分は昼寝をしていた」

エジソンの写真 Thomas Edison | Mark Mathosian | Flickr

この逸話どおり、退屈なことはすべてパソコンに任せようと考えました。

きっかけ

はじめにやったのは実験のデータをボタン一つでいろんなグラフを作ってれるもの。

次が設計の際に応力がある値以下になるまで計算を繰り返すというもの。

2つともなかなかいいかんじにできたので、満足。そして、もっといろんなものを作ってみたいと思いました。

ちなみにVBAの勉強はいろいろなサイトを参考にして、すでにあるプログラムを書き換えたり付け加えたりすることで完成させることができました。

参考書を購入しようとも考えましたが、書いてあることはほぼほぼネットに転がっているのと、理論から学ぶよりプログラムをみて、動かして「ここがどう動く」と学べるから参考書の購入はやめました。

馬鹿なアイデア

次になにをつくろうか考えた際に帰省したときに父親と話した

数字あての宝くじはパソコンで試行してみてそのでる確率が高い数字から選んだらあたるのではないか」

というバカなアイデアを思い出しました。これは学生時代の父親のアイデアであって、「まさかそんなはずない」と思っていた私はあいづちだけうって終わりました。でも、「あったら欲しい」と言っていたので勉強がてら作ってみました。

ちなみにロト7やロト6などの数字を選ぶような機器まで発売されてます。

ミニロト予想

今回はミニロトバージョンを作ってみました。

ミニロトは1~31までの5つの数字をあてる宝くじ。

組み合わせは全部で169911通り。

なぜミニロトかというと計算がすくないという安易な考え。

はじめはシート関数でもあるrandbetweenで試してみたのですが、やはり中心に偏ってしまう。

ちなみに過去のミニロトででた数字も、偶然でているのにも関わらず偏っているので仕方がないことだと思います。

1~31をランダムに並べる方法はあるのに、1~31のなかから5つランダムにという方法がほかに見つからなかったので、力技で!

ランダムにならべて5つ以外消去!

{ほかにいい方法があったら教えてくださいm(_ _)m}

これを200000回繰り返し、出てきた回数を表にし上位8個までをセルを赤色にするプログラムをつくりました。56通りすべてを買えたらいいんですが、そんなお金はないのであとは直感でそのなから5通りだけ選んで買ってます:)

まだ2回ほどしか買っていませんが、あたるはずはありません(笑)

他のアイデアもあります。

上のプログラムを使ってランダムで選んだ数字を、過去のミニロトの当選結果(1等、2等)の結果と比較して、まだ出ていない組み合わせを選んで買ってみるというもの。

今度作ってみたいと思います。

あたらなくても、VBAについて学習できたことが今の自分にとっては価値があると言い聞かせています:)

次はネットで検索して上位に出てくるサイトをエクセルに記録して自動でtwitterに投稿するプログラムを作ってみたいと思っています。まだ合法か規約にそっているかどうかも調べていないでできたら記事書きたいと思っています。

それではマタヤーサイ:)

コメント

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