未分類

ビンゴカード

投稿日:

どんなプログラム?

 プログラムを実行してビンゴカードを表示させ、乱数で数字を表示させビンゴカードに書いてある数字と一致した場合にビンゴカードの数字を()で囲み、リーチの数とビンゴの数を表示させるプログラムです。

手順1

 まず最初にビンゴカードを表示させるようにします。ビンゴカードは一列目を1〜15の数字、二列目を16〜30、三列目を31〜45、四列目を46〜60、五列目を61〜75として、数字がかぶらないように表示させます。そのためにはただ単にその数字の乱数を発生するだけではダメで、その発生させた乱数を配列から取り出す処理をしなければなりません。元の配列から取り出した数を引いて繰り返して処理していきます。

手順2

 そのつぎに1〜75の乱数を発生させ、その発生した乱数とビンゴカードの数が一致すればその数字をカッコで括ります。そして縦横斜めで4つカッコで括られればリーチの変数にプラスし、5つであればビンゴの変数をプラスします。

注意点

 三列目の三段目のいちには数字ではなくFREEを入れるので三列目の繰り返し処理の時に三段目にはFREEを入れる処理を書かないといけません。具体的には三列目の繰り返しのeach_with_indexメソッドの第二引数で指定した変数が2の時にif文の条件分岐でFREEを書く処理をします。

ポイント

 課題がオブジェクト志向でプログラムを書かないといけないルールだったのでただ処理を書くのではなく、第三者が見てどんなことをしているのかがわかるように書かないといけません。なのでこのプログラムを書く際に気をつける点は主に二つで一つ目が助長なコードは書かず、長くなってしまう場合にはクラスを分けてそれを結合させるプログラムにするという点、二つ目がメソッドや変数の名前をどういう処理をしているのかがぱっと見てわかるように書くという点です。

乱数を発生させる時の裏側の動き

 最後に今日使った乱数を発生させるメソッドの動きの裏側を調べて見たいと思います。rubyは最初からメソッド用意してくれて初心者でもなんとなく使えてしまうということが多いのですが、使っているメソッドが実際にどのような動きをしているのかを調べることをしていきたいと思います。今回使ったメソッドはrandメソッドでrand(1..10)という風に1から10の数字で乱数を発生させるという使い方をしました。コンピュータでは計算的をして乱数を発生させようとするのですが、完全な乱数は発生させることはできません。そこで使われるのが擬似乱数というものでその中でも線形合同法がメモリの容量も少なく済むのでよく使われます。これはポケモンの色違いとか個体値とかを出す時にも使われるもので、漸化式を使って擬似的に乱数を発生させます。メリットとして少ない容量で実装できるという点が挙げられ、デメリットとして周期性が発生してしまうという点が挙げられます。

-未分類

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

音楽とは何か

 今日から「音楽とは何か」を読み始めました。朝起きて少し読んでバイトに行き、終わってから本屋で「教養の書」を立ち読みをし、帰ってから歯医者に行き、また「音楽とは何か」をみました。まず教養の話をすると、 …

no image

ジャポニスムについて

 今日から「きものとジャポニスム」を読んでいます。この本は日本の着物が海外へどのように影響を及ぼしたのかというのを一つ一つ掘り下げていく本です。着物は日本の独特のファッションアイテムなのですが、それを …

no image

読字力3

 今日で読字力の本は読み終わりました。簡単にまとめると、今のデジタル世代の若い世代は深い読みができなくなっていています。理由はリソースが溢れていてより簡単にまとめられた文章が溢れていて、それを読んで理 …

no image

ロジカルシンキング

論理的な思考方法を身につけるための本です。筆者は練習すれば誰でもロジカルなコミュニケーション技術を習得することが可能だと言っています。なぜなら、経験則的に、訓練すれば誰でも身につけることができると確信 …

no image

品質マネジメント

品質とは 製品や意図した機能及びパフォーマンス、並びに顧客によって認識される価値や便益 品質マネジメント7つの原則 1、顧客重視 顧客満足は組織を存続させるための最終目的であり、ここでいう顧客は単にお …