前回のじゃんけんプログラムは自分の手とコンピューターの手を予め設定していました。
これではゲームになりません。コンピューター側の手はコンピューター自身に考えて決めてもらいたいです。
じゃんけんの手には1、2、3、の数字を設定しています。ではコンピューターに1~3の数字をランダムに
決めてもらいます。Rubyにはランダムな数字を作るための命令が用意されています。
Rubyリファレンスマニュアルの組み込み関数に「rand」なるものがあります。
これによると、
rand([max=0])
0 以上 max 未満の範囲の整数の乱数を発生します。
とありますので、とりあえず使ってみます。
computer_hand = rand(2)
print(computer_hand)
何回か実行してみたところ0と1の数字が表示されました。
rand()に2を設定したので「0 以上 2 未満の範囲の整数の乱数」
が出来たようです。欲しい数字は1、2、3、なのでrand()に3を
設定します。これで0、1、2、が表示される様になりました。
あとは+1を加算すれば最初に欲しかった数字が
表示できます。
computer_hand = rand(3)+1
print(computer_hand)
前回のプラグラムの「computer_hand =par」の部分を
「computer_hand = rand(3)+1」に書き換えます。
これで今回の目的であるコンピューター自身にじゃんけんの手を考えてもらう事が出来ました。
-Happily Ever After- 終わり。
今回rand()を使用して0、1、2の数字をランダムに作りましたので、ちょっと
グーグルさんに「乱数 アルゴリズム」というキーワードでお尋ねしてみます。
ウィキペディアの擬似乱数というのが検索結果にでました。少しのぞいて見ると
擬似乱数は計算によって作るので、作り方が分かれば理論的には予測可能
とあります。「予測可能」とあるので、コンピューター相手に勝率100%なんてこともあるかもしれませんね。
乱数を作るプログラムは前回紹介した本
C言語によるはじめてのアルゴリズム入門改訂第3版
C言語による最新アルゴリズム事典
にも掲載されています。
最後にもう一つグーグルさんから「メルセンヌ・ツイスタ」という物を教えてもらいました。
なにやら日本人が作成した「最強の乱数発生プログラム」だそうです。
僕には全く分かりません。
最近のコメント