Почему rand () возвращает то же значение, используя srand (time (null)) в этом цикле for?

У меня есть следующий код

#include<iostream>
#include "time.h"

using namespace std;

void printRandomNumber()
{
    srand(time(NULL));
    cout << rand() % 3;
}

int main()
{
    for(int i=0; i<=5; i++)
    {
        printRandomNumber();
    }
system("pause");
}

Вывод - это одно и то же число, повторенное шесть раз, я хотел бы, чтобы он распечатал смесь чисел.

Ответы на вопрос(5)

Решение Вопроса

time имеет точность только второго уровня, и я уверен, что ваш компьютер может обработать эти шесть итераций цикла в течение одной секунды. ; -]

семяonceв начале программы.

    #include<iostream>
    #include "time.h"

    using namespace std;

    // Reset the random number generator with the system clock.
    void seed()
   {
       srand(time(0));
   }

    void printRandomNumber()
    {        
        cout << rand() % 3;
    }

    int main()
    {
        seed();
        for(int i=0; i<=5; i++)
        {
            printRandomNumber();
        }
    system("pause");
    }

что ваше случайное семя практически одинаково. У вас есть 2 решения здесь:

You can put srand(time(0)) at the beginning of your code. This will generate better random sequence for every loop.

If you want to have your srand(time(0)) outside of main() anyway , you can replace srand(time(0)) with srand(rand()) within your function. This will generate a random random seed , resulting in better situation.

srand один раз, в начале. Каждое возможное начальное число соответствует определенному набору псевдослучайных чисел, которые всегда одинаковы при использовании этого начального числа. Поскольку вы исходите из секунд, вы не даете ему времени на изменения. Следовательно, вы каждый раз получаете первое число одного и того же набора чисел.

конечно, вы обычно кормите одно и то же семя каждый раз, потому что ваш цикл займет намного меньше 1 секунды.

Функция srand должна вызываться только один раз за время существования вашей программы.

Ваш ответ на вопрос