#18. Генерация псевдослучайных чисел. Функции математической библиотеки | Язык C для начинающих

preview_player
Показать описание


Порядок генерации псевдослучайных чисел с помощью функции rand(). Заголовочный файл stdlib.h. Установка зерна датчика случайных чисел с помощью функции srand(). Основные математические функции, определенные в заголовочном файле math.h
Рекомендации по теме
Комментарии
Автор

Словил на этом упражнении интересную багофичу. Числа получаются разные, но похожие, как будто реально зависят от времени. Например, запускаем rand() - получаем 25000. Еще раз - 25007, потом 25012, потом 25020. Как будто они привязаны к секундам или еще какой-то большой единице времени. Но если написать еще раз (например, A = rand(); B = rand()) - то B уже получается реально разное.

dimonhiper
Автор

Для линуксоидов у которых с библиотекой math.h не компилируется: вы при вызове компилятора должны добавить арнумент -lm. Делается это в файле tasks.json

EmuDellno
Автор

О, новый видос, он наверняка крутой, давайте в этом убедимся). ***Посмотрел видос*** Да, видос действительно крутой и познавательный, я в этом убедился)

donlinoleum
Автор

Нужно учитывать что при таком способе генерации вещественных случайных чисел мы будем получать не равномерное распределение вещественных случайных чисел в заданном интервале а случайное вещественное число из "дискретного" набора RAND_MAX вещественных чисел в заданном интервале.

dkir
Автор

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

РусланКарнеенко
Автор

8:15 как же так получается диапазон от [-5 ; 5)? По видимому, программа сначала вычисляет модуль от деления на range (10), а лишь потом от результата отнимает 5. Но ведь приоритет у унарного минуса выше, чем у деления по модулю.

montgomery_wilde
Автор

Если rand() дает числа в диапазоне [0, ​ RAND_MAX] с равномерным распределением, то rand() +rand() даст числа в диапазоне [0, ​ 2*RAND_MAX], но распределение будет не равномерное. Сумма двух независимых, равномерно распределенных случайных величин имеет треугольную плотность вероятности. На краях диапазона вероятность будет меньше, чем в середине диапазона. Лучше применить выражение rand()+rand()%2*(RAND_MAX+1)

olegkomlev
Автор

Доброго времени суток! Напомните пожалуйста в каком видео подробно указывается принцип работы =! в функции scanf? Не могу разобраться.

АндрейФедоров-ря
Автор

Доброе время суток !! Подскажите пожалуйста при компиляции такая ошибка "неопределённая ссылка на «sqrt»". Ос Linux Mint. Гуглил, но не понял как решить(((

donfedor
Автор

Эс-ранд....ох не так мы его в универе называли))

NotIce
Автор

Этот курс только про Си или можно интерпретировать как курс по плюсам, без ООП?

shinigami_yokoso
Автор

тут не может быть ошибки в формуле RAND_MAX >= 32767???? или RABD_MAX <= 32767????

ДмитрийСмирнов-лэл
Автор

Интересно, а есть ли разница в производительности, между *D = sqrt(D);* и *X = sqrt(D);* 🤔

grayich
Автор

Интересно, а есть ли генераторы реально абсолютно случайных чисел? Я так понимаю, что все "случайные" числа, которые генерируются ПК - на самом деле не случайны.

ГубкаБоб-ръ
Автор

Это видео про "Случайности не случайны"

stolebyte
Автор

На 9:18 выражение rand() + rand() не дает полностью случайное число, как это делает просто функция rand() 🤓🤓🤓

ЕдемВдурку
Автор

Автор, спасибо большое! А, единственное, можешь подсказать, что ты менял в json документе, ты true ставил, это на что влияет?

elbinalfadorson