[ 高橋のページ ] [ プログラミングおよび実習II2006 ]
準備として以下のことを行ってください
例えば数当てゲームのプログラムを作るとしたら…
というような手順になるでしょう. 今回は,1.で考えているようなでたらめな数(乱数)をC言語で作り出す方法を取り上げます.ただし,でたらめな数といってもまったくのでたらめというわけではなく,例えば「0から99までの整数」というように何らかのルールに則ったもののことです.
というわけでいきなりですが次のプログラムを作って実行してみましょう.
このプログラムを実行すると,0から19までの整数が10個表示されます. 以下のようなことをして結果がどうなるか観察してみましょう.
ここで登場した二つの関数 rand() と srand() は,次のようなものです
上記のように,rand()が生成する値は漸化式によって次々計算されるものですから,真の意味での乱数ではなく,「疑似乱数」と呼ばれています.
ちなみに,rand()が生成する疑似乱数の最大値は,stdlib.h 中で RAND_MAX として定義されています.したがって,
double x; x = (double)rand() / RAND_MAX;
とかやると,xにはdouble型で0から1までの疑似乱数を代入することができます.
種と個数を入力したら,その個数分の疑似乱数を出力するプログラムを作成しましょう. ただし,以下のことに注意して下さい.
$ ./random 35 <== これは,プログラムの出力ではなく自分でキー入力した種の値 10 <== これは,プログラムの出力ではなく自分でキー入力したデータの個数 5 7 3 8 4 1 3 9 4 1
適当な種や個数で正しく動作することを確認したら,チェックを受けてください.
まずはこのファイルを手元に sortcheck.c という名前で保存して,エディタで中身を確認しましょう.
次に,今まで自分で作ったソースと組み合わせてコンパイル&実行し,適当な値を入力して動作確認しましょう.その際に使うソートの関数は,四つ(単純選択法,バブル,ヒープ,クイック)のうちのいずれかひとつで構いません.
[コンパイルエラーのありがちな原因]
上記の動作確認ができたら,今度は課題Aのプログラムと組み合わせて,次のように実行してみましょう(課題A,Bの実行形式がそれぞれrandom,sortという名前と仮定してます)
$ ./random | ./sort
このようにすると,randomの出力が端末画面に表示されるかわりにsortに渡されます(このような実行の仕方については,課題1027-Cに解説があります).
動作確認して「正しくソートできたみたいです」となったら,チェックを受けてください.
menuコマンドから,数当てゲームを実行できます.これと同じようなゲームのプログラムを作ってみましょう.