2

Linuxのrandom()関数を使用して、CentOS5.2でランダムメッセージを生成しています。ランダムに3回呼び出した後、シードをリセットしたいと思います。つまり、1回目の呼び出しと4回目の呼び出しで同じ出力が必要です。rand()関数を初期状態に設定する方法はありますか?または私がそれを行うことができる他の機能を知っていますか?

4

2 に答える 2

1

シードを覚えて、それを使用してリセットするだけです。Cでこのようなもの:

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

int main() {
    int seed = time(NULL);
    int i;

    for (i = 0; i < 10; i++) {
        if (!(i % 3)) {
            srandom(seed);
        }

        printf("%d\n", random());
    }
}
于 2013-02-12T17:33:42.597 に答える
1

3つの乱数を繰り返したい場合は、3つの連続する乱数を配列に格納し、心ゆくまで繰り返します。

int rand_arr[3];
int i;

srandom(time(NULL));   // Not the best way, but I'm lazy. 

for(i = 0; i < 3; i++)
{
   rand_arr[i] = rand();
}

for(i = 0; i < 10000; i++)
{
   printf("%d\n", rand_arr[i % 3];
}
于 2013-02-12T18:09:44.883 に答える