C言語で使われるRandom関数は常に一定ものもしかでない。
例えば、
#include <stdio.h>
#include <stdlib.h>
main()
{
int i;
for(i=0;i<10;i++){
printf("%d\n",rand()%10+1);
}
}
のようなプログラムを実行すると
[hoge@hoge C]$ ./a.out
4
7
8
6
4
6
7
3
10
2
[hoge@hoge C]$ ./a.out
4
7
8
6
4
6
7
3
10
2
[hoge@hoge C]$ ./a.out
4
7
8
6
4
6
7
3
10
2
この様に毎回同じ値が出現する。
これを解決するためには、
time moduleを使う。
時間によって、random値を変えている。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
main()
{
int i;
srand((unsigned) time(NULL));
for(i=0;i<10;i++){
printf("%d\n",rand()%10+1);
}
}
[hoge@hoge C]$ ./a.out
9
5
4
5
6
3
8
9
9
4
[hoge@hoge C]$ ./a.out
7
1
5
8
1
7
2
7
2
8
[hoge@hoge C]$ ./a.out
6
3
1
7
9
2
5
2
3
2
とすると毎回違いランダムな値がでる。
*時間がほぼ一緒(1秒以内など)に実行すると同じ値が出てしまう。
最終更新:2012年12月24日 15:48