singlepost

С++ – случайные числа при перезапусках программы оказываются одинаковыми << На главную или назад  

Написал код:
static double b1 = (((double)rand())/(double)RAND_MAX);
static double R1 = (((double)rand())/(double)RAND_MAX);
И программа один раз зарандомила числа эти, а все остальные разы, те же самые числа и берёт, а мне надо чтобы каждый раз она заного их рандомила, в чём проблема? как сделать? А потом сколько раз я не перезапускаю программу, студио, компьютер, числа всё равно остаются которые она один раз срандомила :(
П.С. Данный код написан в Form1.h

124 ответов в теме “С++ – случайные числа при перезапусках программы оказываются одинаковыми”

  1. 20
    Василий Рейсер ответил:

    #pragma endregion

    static double TimeNow = 0;

    static double b1 = (((double)rand())/(double)RAND_MAX);
    static double b2 = (((double)rand())/(double)RAND_MAX);
    static double b3 = (((double)rand())/(double)RAND_MAX);
    static double fact (double a) {
    int c = 1;
    for (int i = 1; i < a; i++) {
    c = c*i;
    }
    return c;
    }
    static double num1=100*exp(log(2.0)*b1)*exp(-2.0)/fact(b1);
    static double num2=100*exp(log(2.0)*b2)*exp(-2.0)/fact(b2);
    static double num3=100*exp(log(2.0)*b3)*exp(-2.0)/fact(b3);

    Всегда выдаёт одни и те же числа. Это в объявление. Потом идут реакции по нажатию кнопок.

  2. 19
    Ричард Столлман ответил:

    Что не работает? Вы хотя бы код свой показали.
    Вот рабочий вариант: //paste.org.ru/?6t2gdr

  3. 18
    Василий Рейсер ответил:

    Какие есть ещё идеи, почему не работает?

  4. 17
    Миха Коробов ответил:

    Опс… не заметил :)

  5. 16
    Дмитрий Салмин ответил:

    №16 – прочитай сообщение №7

    Василий ~ Bored ~ Рейсер – отправил мыло

  6. 15
    Влад Темный ответил:

    а в си нету randomize или как тот так???

    комманда которая заново чтото там инициализирует или вызывает в генераторе случайный чисел чтобы случайные числа были разными?
    она имхо во всех языках в хелпе рядом с rand – написанна.

  7. 14
    Миха Коробов ответил:

    Ну, типа, srand(time(0));… //time() в time.h

  8. 13
    Василий Рейсер ответил:

    Личка закрыто

  9. 12
    Василий Рейсер ответил:

    Интересует как решить эту проблему, поэтому любые варианты пойдут :)

  10. 11
    Дмитрий Салмин ответил:

    напиши мыло в личку – я пришлю хтмлку с исходным кодом и объяснениями по теме

  11. 10
    Дмитрий Салмин ответил:

    по идее, должно было выставить генератор ПСЧ на другое начальное значение (по текущему времени)… странно…

  12. 9
    Дмитрий Салмин ответил:

    можно воспользоваться альтернативным ГПСЧ ( например алгоритм Парка-Миллера) если интересует, могу скинуть текст

  13. 8
    Василий Рейсер ответил:

    Дмитрий, не сработало :(

  14. 7
    Дмитрий Салмин ответил:

    #include <ctime>

    srand((unsigned)time(NULL));
    xxx = (((double)rand())/(double)RAND_MAX);

    мне помогло в похожем случае

  15. 6
    Ричард Столлман ответил:

    Василий ~ Bored ~ Рейсер, извините, я имел ввиду намек на то чтобы Вы почитали про srandom функцию.

  16. 5
    Александр Лищенер ответил:

    Ричард, у него венда

  17. 4
    Александр Лищенер ответил:

    static дает то, что значение числа считается один(1) раз)

  18. 3
    Василий Рейсер ответил:

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

  19. 2
    Ричард Столлман ответил:

    man srandom

  20. 1
    Василий Рейсер ответил:

    Ричард Столлман, ответ не понятен.

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.