MS, к примеру, славится большой тягой к сохранению обратной совместимости
Думаю, что это самое правильное предположение!
Тем не менее, наверное, вопрос был поднят не зря.
Если кто-то будет создавать датчики псевдослучайных чисел на базе классической функции rand(), то должен отдавать себе отчет: в Windows этот датчик "16-битный" и для генерации чисел используются 15 бит (RAND_MAX=2**15-1).
В свое время меня, например, такая частота (0..32767) генерации псевдослучайных чисел для решения задачи не устроила - было невооруженным глазом видно, что последовательность чисел редкая.
(Кстати, я очень долго искал причину этого явления! Кучу времени потерял, пока понял что к чему).
Так что есть два выхода из положения в OS Windows:
1. Использовать C++ и класс .
2. При помощи приведенных мною выше программ (или аналогов) генерировать псевдослучайные числа в два обращения к функции rand() - получится 30-битный датчик псевдослучайных чисел.
В OS Linux классический датчик псевдослучайных числел 31-битный (RAND_MAX=2**31-1).
Кстати, если не устраивает и 30/31-битный датчик, то по аналогии с приведенными выше программами можно организовать 60/62-битные датчики соответственно с RAND_MAX=2**60-1(2**62-1).
Разумеется, работать надо с 64-битным целым типом данных long long int.
В OS Windows будет 4-кратное обращения к функции rand(), а в Linux - 2-кратное.
P.S. Был немного удивлен, что в 64-разрядных ОС Linux датчик rand() по-прежнему 31-битный, а не 63-битный. Наверное, не смогли найти достаточно большое простое число для этой цели. А может 31-битного датчика уже хватает на все мыслимые и немыслимые запросы.