Нет, стандарт ANSI C only указывает, что rand()
должен генерировать поток случайных целых чисел от 0 до RAND_MAX, который должен быть не менее 32767 ( source ). Этот поток должен быть детерминированным только в том смысле, что для данной реализации на данном компьютере он должен создавать один и тот же целочисленный поток с тем же начальным числом.
Вы хотите портативный PRNG. Mersenne Twister (многие реализации, связанные внизу) довольно переносимы, как и доморощенный PRNG Бена Пфаффа, совместимый с C99. Boost.Random тоже должно быть в порядке; когда вы пишете свой код на C ++, использование Boost не сильно ограничивает ваш выбор платформ (хотя у некоторых «меньших» (то есть несовместимых) компиляторов могут возникнуть проблемы с интенсивным использованием шаблонного метапрограммирования). Это действительно проблема только для встраиваемых платформ малого объема и, возможно, новых исследовательских архитектур, поэтому, если под «любым компьютером» вы подразумеваете «любую платформу x86 / PPC / ARM / SPARC / Alpha / и т. Д., На которую ориентируется GCC», любую из выше должно быть просто отлично.