rand/srand

int rand( void )
void srand( unsigned int seed )

rand関数は0〜32767までの整数乱数値を発生させる。

単純にrand関数を使うと毎回同じ乱数列になる為
毎回異なる乱数列を得たい場合は
時間関数timeと乱数系列初期値設定関数srandを使い
次のように記述する。

srand( ( unsigned )time( NULL ) );


サンプル

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

void main()
{
 int i;
 srand( ( unsigned )time( NULL ) );

 // 0〜32767の整数乱数
 for ( i=0; i<=10; i++ ) printf( "%d\n", rand() );
 // 0〜1の実数乱数
 for ( i=0; i<=10; i++ ) printf( "%f\n", rand() / 32767.0 );
 // 0〜1未満の実数乱数
 for ( i=0; i<=10; i++ ) printf( "%f\n", rand() / 32767.1 );
 // このように書いているのもある
 for ( i=0; i<=10; i++ ) printf( "%f\n", rand() / 32768.0 );
 // 1〜6の整数乱数
 for ( i=0; i<=10; i++ ) printf( "%d\n", ( int )( ( rand() / 32767.1 * 6 ) + 1 ) );
 // これだと商が1.0の場合に7がでてしまう
 for ( i=0; i<=10; i++ ) printf( "%d\n", ( int )( ( rand() / 32767.0 * 6 ) + 1 ) );
}


以下のような式もあったりします。
( rand() % ( 上限 - ( 下限 ) + 1 ) ) + 下限

・0〜9の値
rand() % 10

・1〜6の値
( rand() % 6 ) + 1

・-3〜3の値
( rand() % 7 ) - 3
C > 標準関数 > 一般ユーティリティ | comments (0) | trackbacks (0)

Comments

Comment Form

icons:

Trackbacks