アットウィキロゴ

C -random

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
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。