-1

時間関数、静的変数、グローバル変数などの標準 C 関数を使用せずに乱数発生関数を作成する方法は?

/* #include <time.h> Don't use time functions. */
/* int seed = 1234; Don't use global variables. */
int generate_random(void)
{
    /* static int seed = 1234; Don't use static variables. */
    /* return (time() % 100); Don't use time functions. */
}

言い換えれば、これrandom generator functionは最後の状態を記憶するべきではありません。

4

5 に答える 5

0

独自の擬似乱数ジェネレーターを実行する必要があると仮定すると、状態を覚えておく必要があります。

関数が最後の状態を記憶してはならない場合は、それを引数として渡す必要があります。

int generate_random(int * lastState)
{
    // generate next random from lastState
    // store state to lastState
    // return result
}

int main(void)
{
    int lastState = 1234; // seed it
    int random = generate_random(&lastState);
}
于 2013-08-22T07:09:53.697 に答える
-1

行う

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

srand(time(NULL));
int r = rand();

利用人数を制限したい場合

int r = minNum + rand() % maxNum;

独自のランダム関数を作成しようとしないでください。うまく終わらない

于 2013-08-22T06:25:17.533 に答える