Как генерировать разные случайные числа в цикле в C ++? - PullRequest
19 голосов
/ 08 февраля 2011

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

for (int t=0;t<10;t++)
{
    int random_x;
    srand ( time(NULL) );
    random_x = rand() % 100;
    cout<<"\nRandom X = "<<random_x;
} 

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

Есть ли возможность сброса инициализации случайных чисел?

Ответы [ 13 ]

0 голосов
/ 08 февраля 2011

Вам нужно извлечь инициализацию time () из цикла for.

Вот пример, который выведет в консоли Windows ожидаемое (ахах) случайное число.

#include <iostream>
#include <windows.h>
#include "time.h"
int main(int argc, char*argv[])
{
    srand ( time(NULL) );
    for (int t = 0; t < 10; t++)
    {
        int random_x;

        random_x = rand() % 100;
        std::cout << "\nRandom X = " << random_x << std::endl;
    }
    Sleep(50000);
    return 0;
}
0 голосов
/ 08 февраля 2011

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

0 голосов
/ 08 февраля 2011

Прекратите сеять генератор каждый раз. Вытащите звонок из петли

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...