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

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

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

エラーが発生しました。

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

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

第二十四話 乱数の種



 俺たちはC言語の乱数の問題に向き合っている。

 先輩の話は続く。

「実は普通のコンピューターは厳密には乱数を作れないのよ。特殊な計算で疑似乱数を作っているのに過ぎないわけ。だから、毎回実行するたびに同じ数になるのよ」

「そ、それじゃ、本当の乱数は作れないのか」

「そんなことないよ。巷のゲームじゃ、どれも乱数使ってるでしょ? 疑似乱数計算に使うのは、乱数の種、シードっていうんだけど、それを毎回違った数で初期化したら、結果的に毎回違った数になるわよ。それにはsrand関数を使うの」

 先輩は再びコードに書き加える。




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

#include<stdio.h>

#include<stdlib.h>

#include<time.h>


int main(void)

{

  srand((unsigned) time(NULL));

  int seikai = rand() % 10 + 1;


「こんどはtime.hですか」

「現在時刻が欲しいからねー。これは毎回実行するたびに違う数でしょ? 同時に二つ実行しない限り、同じ時刻は一つもない。だから、乱数のシード値に使うには最適なのよ」

「時間を使うんですか。なるほどー」と西原さん。

「言うまでもないかもしれないけど、time関数で得られるのよ。あと、このsrand関数の引数はunsigned intしか受け付けないから、timeの戻り値の型をそれに変換しているわ。ここらへんの詳しい話はまた今度ね」

「これで毎回、乱数は違うのか」

「じゃ、実行して検証」

 先輩はコンパイルすると実行する。



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


「では、2を入れるとー」


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

もっと下です

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

当たりです!

正解は 1 です!

C:¥sample>_



「おおっ。ちゃんと乱数になってる!」

「ためしにもう一度」

 先輩は再び実行する。


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

もっと上です

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

もっと上です

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

当たりです!

正解は 8 です!

C:¥sample>_



「これが完成形ね。イツキくん、わかった?」

「はい。もうバッチリですよ」

 俺は自信を持って答えた。

 どうやら、俺の数当てゲーム、初めて作ったゲームはこれで完成したと言っていいだろう。

 先輩の力をかなり借りたのは気にしないでおこう……。


「じゃ、次にもうちょっとこれをゲームらしくしていこうよ」

 先輩の言葉に俺は現実へと戻された。

「もっと?」

「たとえばさ、これにスコアを付け加えてみるとか」

「スコアか。それもいいな」


 数当てゲームの改造は続くのだ。

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

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

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

↑ページトップへ