C 基本講座

関数で疑似乱数を発生させる

LinkedInラーニングの無料トライアルを今すぐ試そう

無料で視聴する すべての加入プランを見る
このレッスンでは、標準ライブラリ関数を使って、でたらめな数である乱数を疑似的に発生させる方法について説明します。
講師:
06:23

字幕

このレッスンでは標準ライブラリ関数を使って、でたらめな数である乱数を擬似的に発生させる方法について説明します。ゲーム性のあるプログラムを作成するのにはでたらめな数である乱数が必要になります。コンピューターで作り出した乱数を擬似乱数と呼びC 言語では rand 関数を使って発生させることができます。rand 関数を使用するのにはstrlib.h の include が必要です。このプログラムは 10 回続けてrand 関数を使って擬似乱数を発生させるものです。実行させてみましょう。実行させるとこのように10 回擬似乱数を表示しますね。rand 関数は0からRAND_MAX の範囲の擬似乱数を返します。RAND_MAX は stdlib.h で定義された値ですが、コンパイラに依存します。試しにいくつであるか表示してみましょう。このように 32767 と表示しました。ですから rand 関数では0から 32767 の範囲の擬似乱数を返却するわけです。この RAND_MAX でrand 関数で発生させた値を割ると0.0 から 1.0 未満の擬似乱数を発生させることができます。実行させるとこのように0.0 から 1.0 未満の擬似乱数を表示しています。 また、特定の範囲で擬似乱数を発生させるためには% 演算子を使います。例えば0から9の場合には10 で割った余りを利用します。このように0から9の範囲で擬似乱数を発生しています。+1 すれば1から 10 の範囲で擬似乱数を発生させることができますね。このように1から 10 の範囲になりました。さらに 11 で割った余りは0から 10 なのでそれに 10 を加えれば 10 から 20 の範囲での擬似乱数を発生させることができます。このような結果が得られました。すでにお気づきだと思いますが、rand 関数が返す擬似乱数はプログラムを実行させるたびに同じパターンです。もう一度やってみましょう。このように何度実行させても同じパターンで擬似乱数が返ってきますね。このパターンを変えるのにはsrand 関数を使います。乱数のため、これをseed と呼びますがこの seed を srand 関数に引数で与えるとseed に応じて擬似乱数の発生パターンが変わるのです。試しにこのようにsrand に seed として10 を与えてみました。実行してみましょう。今度は先ほどとパターンが変わりましたね。今度は 100 にしてみます。 また変わったと思います。このように実行するたびにseed の値を変えれば異なるパターンで擬似乱数を発生させることができます。srand 関数を呼ばずにrand 関数を使用するとseed に1を設定したのと同じことになるので何度実行しても rand 関数は同じパターンで擬似乱数を返したのです。けれども実行するたびに seed を変えてビルドし直すのは大変ですね。そのため、通常は現在時刻をseed に渡すように記述します。このように記述すると time 関数で現在時刻を求めることができます。尚、この time 関数を使用するためにはtime.h の include が必要です。またこの time 関数が返した値はtime_t 型ですがsrand 関数の引数はunsigned 型です。そのためこのようにunsigned でキャストしています。実行してみます。もう一度実行します。もう一度実行しましょう。これで1秒以上経過してから実行を繰り返せばそのたびに新しい seed で擬似乱数を表示することができるようになりました。このレッスンでは標準ライブラリ関数を使ってでたらめな数である乱数を擬似的に発生させる方法について説明しました。

C 基本講座

C言語はUNIXというOSを記述するために開発されたプログラミング言語で、組み込みシステムの開発を中心に今も使われています。このコースでは簡単なプログラムを作成しながら、C言語の基本的な文法を学びます。データ型や制御文などの基礎的な文法からポインタや構造体といったC言語の特徴的な内容まで幅広く取り上げます。よく使われる標準ライブラリ関数も数多く紹介します。

5時間45分 (60 ビデオ)
現在、カスタマーレビューはありません…
ソフトウェア・トピック
プラン加入者限定
発売日:2017年11月05日

このコースは、「オンデマンド」でご利用可能であり、ダウンロードすることもオンラインで見ることもできます。

ダウンロードすると、オフラインでコースを使用し、豊富なインターフェースをフルに活用できます。複数のデバイスを使用したり、 一度に全コースをダウンロードしたくない場合は、アカントにログインして、ストリーミング・ビデオとしてコースのレッスンを視聴してください。

ビデオトレーニングをお楽しみいただけますように! お問い合わせは、cs-jp@lynda.com宛までご連絡ください。