乱数を発生させる組込み関数
組込み関数(rand(), random()など)の使い方
→manコマンドでrand, randomについて調べてみよ。(関数の型、発生する乱数値の範囲、周期、注意事項など)
例1)0〜1の範囲の値をもつ100個の乱数を発生し表示するプログラム
#include <stdio.h>
#include <stdlib.h> /* rand()を利用するために必要*/
#define MAXNUM (32768-1) /* rand() の発生する乱数値の最大値*/
main()
{
int i;
srand(55); /* seed(種)=乱数の系列を決める値を与える*/
for(i = 0; i < 100; ++i)
printf("%lf\n", (double)rand()/MAXNUM);
}
例2)乱数の分布と平均値を求めるプログラム
#include <stdio.h>
#include <stdlib.h>
#define MAXNUM1 (32768-1)
#define MAXNUM2 (2147483648-1)
main()
{
int i, j, number, bunpu[10][2];
double r1, r2, sum1, sum2, a[2];
printf("Num = "); scanf("%d", &number);
for(i = 0; i < 10; ++i)
for(j = 0; j < 2; ++j)
bunpu[i][j] = 0;
a[0]=0; a[1]=0;
srand(55);
srandom(1);
for(i = 0; i < number; ++i){
r1 = (double)rand()/MAXNUM1*10.0;
r2 = (double)random()/MAXNUM2*10.0;
bunpu[(int)(r1)][0]++;
bunpu[(int)(r2)][1]++;
sum1 = sum1 + r1;
sum2 = sum2 + r2;
}
a[0] = sum1/(number + 1)/10;
a[1] = sum2/(number + 1)/10;
for(j = 0; j < 2; ++j){
for(i = 0; i < 10; ++i){
printf("%5d ",bunpu[i][j]);
}
printf(" %.5lf", a[j]);
printf("\n");
}
}