## table of contents

other sections

RANDOM(9) | Kernel Developer's Manual | RANDOM(9) |

# NAME¶

`arc4rand`

,
`arc4random`

,
`random`

,
`read_random`

,
`srandom`

—
supply pseudo-random numbers

# SYNOPSIS¶

```
#include
<sys/libkern.h>
```

`void`

`srandom`

(`u_long seed`);

`u_long`

`random`

(`void`);

`void`

`arc4rand`

(`void *ptr`,

`u_int length`,

`int reseed`);

`uint32_t`

`arc4random`

(`void`);

```
#include
<sys/random.h>
```

`int`

`read_random`

(`void *buffer`,

`int count`);

# DESCRIPTION¶

The`random`

() function will by default produce
a sequence of numbers that can be duplicated by calling
`srandom`

() with
‘`1`

’ as the
`seed`. The

`srandom`

() function may be called with any
arbitrary `seed`value to get slightly more unpredictable numbers. It is important to remember that the

`random`

() function is entirely predictable,
and is therefore not of use where knowledge of the sequence of numbers may be
of benefit to an attacker.
The `arc4rand`

() function will return very good
quality random numbers, slightly better suited for security-related purposes.
The random numbers from `arc4rand`

() 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 the
`reseed`argument. The

`read_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 the `buffer`is filled with output generated by

`random`

().
The `buffer`is filled with no more than

`count`bytes. It is advised that

`read_random`

() is not used; instead use
`arc4rand`

()
All the bits generated by `random`

(),
`arc4rand`

() and
`read_random`

() are usable. For example,
‘`random()&01`

’ will produce a random
binary value.
The `arc4random`

() is a convenience function
which calls `arc4rand`

() to return a 32 bit
pseudo-random integer.
# RETURN VALUES¶

The`random`

() 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).
The `arc4rand`

() function uses the RC4
algorithm to generate successive pseudo-random bytes. The
`arc4random`

() function uses
`arc4rand`

() to generate pseudo-random
numbers in the range from 0 to (2**32)−1.
The `read_random`

() function returns the number
of bytes placed in `buffer`.

# AUTHORS¶

Dan Moschuk wrote`arc4random`

().
Mark R V Murray wrote

`read_random`

().September 25, 2000 | Debian |