@Sdelan_v_CCCP

Почему не изменяется значение в функции?

Всем привет! Вот програмка.

void test_random(void)
{
    srand(time(NULL));
    u16 value = rand()%24;
    printf("value = %d\n", value);

}

void main(void)
{
     int i;
     for(i = 0; i < 10; i++) {
        test_random();
     }
    
}


вот результат
value = 12
value = 12
value = 12
value = 12
value = 12
value = 12
value = 12
value = 12
value = 12
value = 12

Почему он так делает? Почему результаты одинаковые, а не разные?

PS: Linux, компилятор gcc
  • Вопрос задан
  • 2458 просмотров
Решения вопроса 3
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Потому что time не успевает измениться за время ваших десяти циклов, а вы используете его для инициализации генератора случайных чисел. Может вынести srand за цикл?
Ответ написан
Csklassami
@Csklassami
Рандомизатор следует определять в main()...
Ответ написан
Комментировать
@Sdelan_v_CCCP Автор вопроса
Спасибо за ответы. Решение есть тут
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
donkaban
@donkaban
Умею рисовать тени
Немного в сторону от вопроса. 21 век на дворе, 14 год кончается.
Отчего же не использовать стандартную библиотеку?
www.cplusplus.com/reference/random
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы