**NAME**

arc4rand,arc4random,random,read_random,srandom— supply pseudo-random numbers

**SYNOPSIS**

#include<sys/libkern.h>voidsrandom(u_longseed);u_longrandom(void);voidarc4rand(void*ptr,u_intlength,intreseed);u_int32_tarc4random(void);#include<sys/random.h>intread_random(void*buffer,intcount);

**DESCRIPTION**

Therandom() function will by default produce a sequence of numbers that can be duplicated by callingsrandom() with ‘1’ as theseed. Thesrandom() function may be called with any arbitraryseedvalue to get slightly more unpredictable numbers. It is important to remember that therandom() function is entirely predictable, and is therefore not of use where knowledge of the sequence of numbers may be of benefit to an attacker. Thearc4rand() function will return very good quality random numbers, slightly better suited for security-related purposes. The random numbers fromarc4rand() are seeded from the entropy device if it is available. Automatic reseeds happen after a certain timeinterval and after a certain number of bytes have been delivered. A forced reseed can be forced by passing a non-zero value in thereseedargument. Theread_random() function is used to return entropy directly from the entropy device if it has been loaded. If the entropy device is not loaded, then thebufferis filled with output generated byrandom(). Thebufferis filled with no more thancountbytes. It is advised thatread_random() is not used; instead usearc4rand() All the bits generated byrandom(),arc4rand() andread_random() are usable. For example, ‘random()&01’ will produce a random binary value. Thearc4random() is a convenience function which callsarc4rand() to return a 32 bit pseudo-random integer.

**RETURN** **VALUES**

Therandom() function uses a non-linear additive feedback random number generator employing a default table of size 31 long integers to return successive pseudo-random numbers in the range from 0 to (2**31)−1. The period of this random number generator is very large, approximately 16*((2**31)−1). Thearc4rand() function uses the RC4 algorithm to generate successive pseudo-random bytes. Thearc4random() function usesarc4rand() to generate pseudo-random numbers in the range from 0 to (2**32)−1. Theread_random() function returns the number of bytes placed inbuffer.

**AUTHORS**

Dan Moschuk wrotearc4random(). Mark R V Murray wroteread_random().