表示調整
閉じる
挿絵表示切替ボタン
▼配色
▼行間
▼文字サイズ
▼メニューバー
×閉じる

ブックマークに追加しました

設定
0/400
設定を保存しました
エラーが発生しました
※文字以内
ブックマークを解除しました。

エラーが発生しました。

エラーの原因がわからない場合はヘルプセンターをご確認ください。

ブックマーク機能を使うにはログインしてください。
25/37

第二十三話 乱数



「問題?」

 立花先輩の言葉に、俺は鸚鵡返しに尋ねた。

「うん。ま、これは見てみる方が早いかなー。とりあえず、コードを改造してみるわね」

 先輩はキーボードに触れると、俺の書いたコードに少し書き加えていった。



/* 数当てゲーム kazuate.c */

#include<stdio.h>

#include<stdlib.h>


int main(void)

{

  int seikai = rand() % 10 + 1;


「stdlib.hですか?」

「この中にrand関数があるの。C言語だと、こういう風に個別に必要な関数の入ったライブラリをインクルードしていくわけ。ちなみにstdlibはスタンダードライブラリの略ね。stdlibは、このrandの他にも、atoi、atol、malloc、free、absとかの関数を使いたいときに加えることが多いわ」

「rand()がランダムですよね?」と西原さん。

「そう。これでランダム、日本語で言うと乱数の値が作られるわけだけど、それに 10を割って、その余りを得るわけ。%記号は、割り算の余りが欲しいときに使うのね」

「なんで余りが要るのかな?」

「イツキくん、よーく考えなさいよ。たとえば15って乱数を得ても、10割って余りを得たら5でしょ? 20だったら、余りは0。19だったら、余りは9。4だったら、そのまま余りも4。ほら、ランダム関数の戻り値がどんな数だったとしても、結果的には0から9の数が得られるじゃない。それに1足したら、1から10の数が得られるわけよ」

「あ、なるほど。よく考えられてるな」

 俺は感心した。

 数学をもっと勉強しとくべきだったかな。

「これで問題ないわけですね」と西原さんも頷く。

「そうかなー?」先輩は怪しい笑みを口元に浮かべた。

 うむむ。先輩がこういう笑みを浮かべたら、いつも問題が起きると俺は学習している。

「ま、すぐわかるわ。とりあえず、実行してみよう」

 先輩はコンパイルすると、プログラムを実行した。



C:¥sample>kazuate

数当てゲーム

数を入力してください(1 - 10) :_


「じゃ、5を入力してみるよ」と先輩は5を入れた。


数を入力してください(1 - 10) : 5

もっと下です

数を入力してください(1 - 10) :_


「おっ。結果が違う」

「でしょ? じゃ、今度は1」


数を入力してください(1 - 10) : 1

もっと上です

数を入力してください(1 - 10) :_


「なら、2かなー」


数を入力してください(1 - 10) : 2

当たりです!

正解は 2 です!

C:¥sample>_



「どこも問題無いようだけど」

「じゃ、もう一度やってみるよ」

 先輩は再びプログラムを実行する。


数を入力してください(1 - 10) :_


「ここで2をまた入れてみると……」


数を入力してください(1 - 10) : 2

当たりです!

正解は 2 です!

C:¥sample>_


「え……これ、たまたま同じ正解だったとか……」

「じゃ、もう一度」


数を入力してください(1 - 10) : 2

当たりです!

正解は 2 です!

C:¥sample>_



「正解が、2に固定されている!?」

 西原さんも驚きの表情を隠せない。

「そう。これが乱数の問題。でも、それを解決する方法があるから、教えるわ」


 先輩は話を続けた。

評価をするにはログインしてください。
この作品をシェア
Twitter LINEで送る
ブックマークに追加
ブックマーク機能を使うにはログインしてください。
― 新着の感想 ―
このエピソードに感想はまだ書かれていません。
感想一覧
+注意+

特に記載なき場合、掲載されている作品はすべてフィクションであり実在の人物・団体等とは一切関係ありません。
特に記載なき場合、掲載されている作品の著作権は作者にあります(一部作品除く)。
作者以外の方による作品の引用を超える無断転載は禁止しており、行った場合、著作権法の違反となります。

この作品はリンクフリーです。ご自由にリンク(紹介)してください。
この作品はスマートフォン対応です。スマートフォンかパソコンかを自動で判別し、適切なページを表示します。

↑ページトップへ