C++スコーラ

標準ライブラリ関数

最終更新:

cschola

- view
管理者のみ編集可

標準ライブラリ関数

冒頭で printf() scanf_s() は stdio.h の中に入っていると説明しました。
C言語にはほかにもたくさんの関数が用意されています。
このページですべてを説明するのは難しいので、比較的使用頻度の高いものだけ紹介します。
今回は rand() について説明します。 rand() は乱数を得る関数です。
乱数とはサイコロの目のように毎回ランダムに出てくる数値のことです。
次のプログラムを実行してみると乱数を見ることができます。
rand() を使うためには stdlib.h をインクルードする必要があります。
#include <stdio.h>
#include <stdlib.h>

int main(){

	for(int i = 0; i < 10; i++) printf("%d\n",rand());

	return 0;
}

では表示された数値を覚えてもう一度実行してみましょう。
表示されている数値が先ほどと同じです。

実行するたびに違う乱数を作るには?

実行するたびに違う乱数を生成するには2つ関数を使います。
srand() と time() です。
srand() は stdlib.h の中に入っていますが、time() を使うためには time.h をインクルードする必要があります。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(){

	srand((unsigned int)time(0));

	for(int i = 0; i < 10; i++) printf("%d\n",rand());

	return 0;
}

実行するたびに違う数値が出てきました。 
確かに違う数値だけどなんか近い数字が出ている気がするという人は、
srand( (unsigned int)time(0) ) の 部分を srand( (unsigned int) ( time(0)*time(0) ) ) と変えてみましょう。 数値がばらけます。
いくつ以上いくつ以下という決まった範囲の乱数を出す場合は次のようにします。
	srand((unsigned int)time(0));

	for(int i = 0; i < 10; i++) printf("%d\n",rand()%10+1);/*1から10の乱数を生成*/
今回は1以上10以下の乱数を生成しています。
整数を10で割った余りはと0~9のどれかになります。そこに1を足すことで1~10になります。
標準ライブラリ関数はほかにもあります。 自分で検索して調べてみましょう。

練習問題

次のようなプログラムを作ってください

第1問
 ユーザーに2つの整数を入力してもらい、
 小さい方の数以上、大きい方の数以下の数値を、ランダムに一つ表示する。

※このページに記載している方法ではこの問題を解けないので、自分で「C言語 乱数 範囲指定」など検索すること

目安箱バナー