この章ではswitch文で占いを作成します。占いは毎回同じ判定ではなく、結果はランダムになるようにします。 初めにランダムな数をransuuに入れるのですが、このランダムな数を生成するにはrand関数を使用します。
rand関数を使うためには文頭でと書かなくてはいけませんので注意してください。
rand関数は0か32767までの数字の中でランダムな数を返しますが、範囲を限定したい場合には例えばと書きますと1から6までのランダムな数を返すようになります。
0から6までの数値をランダムに返したいのならばと書きます。
しかし、このrand関数だけではプログラムを何回実行しても同じ結果にしかなりません。理由は乱数を初期化していないからです。
この乱数を初期化するにはsrand関数を使います。 ではsrand関数の説明をしていきます。
〇「unsigned」は「符号無し整数」で「0を含むプラスの値」が使用できる型です。
〇この関数を使う時にはを記述する必要があります。
〇srand関数はrand関数を使用する時に一緒に使用します。
〇srand関数は乱数の初期値を設定する関数です。
つまり、乱数に使う初期値を変える関数です。
例えばと書くと初期値が1、とすると初期値が2の乱数を導き出すことが出来ます。 初めにを入れないで、rand関数を実行してみましょう。 この例の実行結果は以下の通りです。 ではもう一度実行してみましょう。
結果は以下の通りですが、1回目の結果と同じです。
rand関数はランダムに数値を導き出してくれますが、乱数になるのは初めの1回だけです。 そこで乱数の初期値を設定する関数であるsrand関数で実行結果を変えることが出来ます。
次の例は先ほどの例にを追加しただけです。 結果は何度実行しても以下の通りです。 初期値を変えたので乱数の値は変わりましたが、この例のようにsrandの中の引数を固定した場合はいつまで経っても同じ値になります。
そこでsrand関数の引数にを使用します。
この中のtimeはtime関数で、1970年1月1日0時0分0秒からの経過時間を返します。
ですのでtime関数をsrandの引数に使うことで、その瞬間の時刻が引数に入りますので実行の都度違う数値を与えることができます。
time関数を使う時にはを記述する必要があります。 これで毎回違う結果を出力することが出来ます。 では占いの例に戻ります。 ransuuに入った数字で大吉から大凶までをランダムに占い、その結果をポインタのunseiに入れて出力しています。
カテゴリー