gcc реализация rand () - PullRequest
       7

gcc реализация rand ()

7 голосов
/ 14 октября 2010

Я часами пытался найти реализацию функции rand (), используемой в gcc ... Было бы очень полезно, если бы кто-то мог сослаться на меня с файлом, содержащим его реализацию или веб-сайт с реализацией.

Кстати, какой каталог (я использую Ubuntu, если это имеет значение) содержит стандартные реализации библиотеки c для компилятора gcc?

Ответы [ 2 ]

13 голосов
/ 14 октября 2010

rand состоит из вызова функции __random, которая в основном просто вызывает другую функцию с именем __random_r в random_r.c.

Обратите внимание, что приведенные выше имена функций являются гиперссылками на исходный репозиторий glibc версии 2.28.

Случайная библиотека glibc поддерживает два вида генератора: простой линейный конгруэнтный один, и более сложный линейный регистр сдвига с обратной связью один.Можно создать экземпляры любого из них, но глобальный генератор по умолчанию, используемый при вызове rand, использует генератор регистров сдвига с линейной обратной связью (см. Определение unsafe_state.rand_type).

9 голосов
/ 14 октября 2010

Вы найдете реализацию библиотеки C, используемую GCC, в проекте GNU GLIBC .

Вы можете скачать его исходники и найти rand() реализацию. Источники с определениями функций обычно не устанавливаются в дистрибутив Linux. Только заголовочные файлы, которые, я полагаю, вы уже знаете, обычно хранятся в каталоге /usr/include.

Если вы знакомы с GIT управлением исходным кодом, вы можете сделать:

$ git clone git://sourceware.org/git/glibc.git

Чтобы получить исходный код GLIBC.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...