---
name: "rand"
section: "3"
platform: "macos"
package: "Libc"
version: "1752.120.2"
release: "macOS 26.5"
platforms: ["linux", "freebsd", "macos"]
url: "https://new.carta.tech/rand/3"
---

# rand(3)

bad random number generator

## NAME

**rand**, **rand\_r**, **srand**, **sranddev** – bad random number generator

## LIBRARY

Standard C Library (libc, -lc)

## SYNOPSIS

**#include \<stdlib.h\>**

*int*\

**rand**(*void*);

*int*\

**rand\_r**(*unsigned \*seed*);

*void*\

**srand**(*unsigned seed*);

*void*\

**sranddev**(*void*);

## DESCRIPTION

These interfaces are obsoleted by [arc4random(3)](/arc4random/3.md).

The **rand**() function computes a sequence of pseudo-random integers in the range of 0 to RAND\_MAX (as defined by the header file ⟨stdlib.h⟩).

The **srand**() function sets its argument *seed* as the seed for a new sequence of pseudo-random numbers to be returned by **rand**(). These sequences are repeatable by calling **srand**() with the same seed value.

If no *seed* value is provided, the functions are automatically seeded with a value of 1.

The **sranddev**() function initializes a seed, using the [random(4)](/random/4.md) random number device which returns good random numbers. However, the **rand**() function still remains unsuitable for cryptographic use.

The **rand\_r**() function provides the same functionality as **rand**(). A pointer to the context value *seed* must be supplied by the caller.

## SEE ALSO

[arc4random(3)](/arc4random/3.md), [random(3)](/random/3.md), [random(4)](/random/4.md)

## STANDARDS

The **rand**() and **srand**() functions conform to ISO/IEC 9899:1990 (“ISO C90”).

The **rand\_r**() function is as proposed in the POSIX.4a Draft #6 document.
