== Other functions == Random number generation, memory allocation, logging. [[randomref]] === Random bits === The first time PBC is asked to generate a random number, the library will try to open the file `/dev/urandom` as a source of random bits. If this fails, PBC falls back to a deterministic random number generator (which is of course completely useless for cryptography). It is possible to change the file used for random bits. Also, explicitly selecting the deterministic random number generator will suppress the warning. On Windows, by default, PBC uses the Microsoft Crypto API to generate random bits. include::gen/pbcrandom.txt[] === Custom allocation === Like GMP, PBC can be instructed to use custom memory allocation functions. This must be done before any memory allocation is performed, usually at the beginning of a program before any other PBC functions have been called. Also like GMP, the PBC wrappers around +malloc+ and +realloc+ will print a message on standard error and terminate program execution if the calls fail. Replacements for these functions should act similarly. However, unlike GMP, PBC does not pass the number of bytes previously allocated along with the pointer in calls to +realloc+ and +free+. include::gen/alloc.txt[] === Logging === include::gen/log.txt[]