rand/srand
int rand( void )
void srand( unsigned int seed )
rand関数は0〜32767までの整数乱数値を発生させる。
単純にrand関数を使うと毎回同じ乱数列になる為
毎回異なる乱数列を得たい場合は
時間関数timeと乱数系列初期値設定関数srandを使い
次のように記述する。
サンプル
以下のような式もあったりします。
・0〜9の値
・1〜6の値
・-3〜3の値
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
Comments