Обратите внимание - я не писал этот код, я просто пытаюсь его поддерживать / улучшать.
Один из моих заголовочных файлов содержит следующие строки:
/* macros to seed the random number generator */
/* This is needed on Windows which throws an error due to 'random'
not being defined on MingW. I'll clean it up later. */
#define srandom srand
#define random rand
/* New random seed function. */
#define srand srandom
#define rand random
#define rnd(x) ((int)(rand() % (x)) + 1)
#define rund(x) ((int)(rand() % (x)))
Кроме того, у меня есть справочные страницы для всех четырех функций rand
, srand
, random
, srandom
, поэтому я хотел бы предположить, что это все действительные функции языка Си.
Можете ли вы помочь мне понять / выяснить, что происходит, когда я звоню rnd(10)
? Это неопределенное поведение? Одно определение как-то "переопределяет" другое?
(Я спрашиваю, потому что мне кажется, что в моей настоящей программе много маленьких цифр, хотя мои тестовые программы, кажется, работают правильно и распределяются случайным образом.)
Просто быстрое замечание, что я почти уверен, что «много младших чисел», которое я видел, было, вероятно, ошибкой в приоритетах операторов и скобках, из-за чего длинное логическое значение всегда оценивалось как «true».