今日の人気記事

  1. int main(void) - プログラムの基本
  2. 入力した行列の積(掛け算)を計算する
  3. printf関数の変換指定子
  4. continue文 - ループをスキップ
  5. 入力した2つの自然数の最大公約数を求める

乱数の生成 - srand関数

当ページのリンクには広告が含まれています。

スポンサーリンク

ここではC言語のsrand関数を使って、乱数を生成する方法を紹介します。

前の記事ではrand関数を使った乱数の生成方法をみていきましたが、rand関数をそのまま使うと、プログラムを何度動かしても同じ乱数しか発生できない……という問題点があります。

srand関数は引数に適当な値を渡すことで(乱数の種が初期化され)、ランダムなセットの乱数を発生(乱数の発生にはrand関数を使う)することができるようになるので、使い方を覚えておきましょう。

srand関数

srand関数の利用には「stdlib.h」というヘッダーファイルを読み込む必要があります。

#include<stdlib.h>

ここではsrand関数に渡す引数とtime関数で取得した現在時刻を使います。

srand(time(NULL))

srand関数に適当な値を指定することで乱数の種が初期化されるので、プログラム実行毎にランダムなセットの乱数を発生(乱数の発生にはrand関数を使う)することができます。

srand関数で乱数の種を初期化した後、rand関数で乱数を発生させます。

それでは実際に srand関数を使ってみましょう。

サンプルプログラム

srand関数で乱数の種を初期化し、rand関数を使って乱数を3つ表示するサンプルプログラムです。

#include <stdio.h>
#include <stdlib.h>

int main(void){

  int i;

  /* 乱数を生成 */
  printf("◆ 3つの乱数を生成\n");
  for(i=0;i<3;i++)
    printf("%dつ目の乱数 = %d\n", i+1, rand());

  /* 乱数の最大値を表示 */
  i = RAND_MAX;
  printf("\n◆ 乱数の最大値を表示\n");
  printf("RAND_MAX = %d\n", i);

  return 0;
}

いくつかの実行結果です。

◆ 3つの乱数を生成
1つ目の乱数 = 1614695716
2つ目の乱数 = 440051673
3つ目の乱数 = 14787843
◆ 3つの乱数を生成
1つ目の乱数 = 1614729330
2つ目の乱数 = 1005002171
3つ目の乱数 = 1112604342
◆ 3つの乱数を生成
1つ目の乱数 = 1614796558
2つ目の乱数 = 2134903167
3つ目の乱数 = 1160753693

このように3つの乱数が出力されます。

プログラム実行毎にランダムな乱数のセットを取得することができていますね。

基本構文 の人気記事

  1. printf関数の変換指定子
  2. int main(void) - プログラムの基本
  3. 変数の値を出力 - printf 関数
  4. continue文 - ループをスキップ
  5. 条件演算子(3項演算子)「? :」
  6. while文 - 繰り返し処理
  7. エスケープシーケンス - 特殊文字
  8. else if文 - 複数の条件式 - 条件分岐
  9. 関数のプロトタイプ宣言
  10. (前置・後置)インクリメント演算子, ++

関連記事(一部広告含む)