0

Mac にこの dieRole 関数がありますが、Visual C++ 2012 に移動すると、結果は毎回 6 になります。

int dieRoll() // return a number between 1 and 6
{
    static int maxRange = RAND_MAX / 6 * 6; 

    int result;
    do
    {
        result = rand();
    }
    while(result > maxRange);    
    return result % 6 + 1;       
}
4

2 に答える 2

1

同じ数値のみが返されるようにせずに疑似乱数ジェネレーターを初期化するのを忘れました。たとえば、現在の時刻で srand() を呼び出す必要があります。

于 2013-09-19T03:57:25.107 に答える
1

を呼び出すことを検討してくださいsrand()。時間またはプロセス ID を使用して別のシードを指定できます。これは擬似ランダム性であり、必ずしも「ランダム」と見なされるものではないことに注意してください。

int main()
{
    srand(time(NULL));

    std::cout << dieRoll() << std::endl;
}

上記のコードを試すと、1 秒ごとに異なる結果が得られます。:-)

于 2013-09-19T03:57:56.093 に答える