# d3-random

# d3-random

Generate random numbers from various distributions.

## Installing

If you use NPM, `npm install d3-random`

. Otherwise, download the latest release. You can also load directly from d3js.org, either as a standalone library or as part of D3 4.0. AMD, CommonJS, and vanilla environments are supported. In vanilla, a `d3`

global is exported:

```
<script src="https://d3js.org/d3-random.v1.min.js"></script>
<script>
var random = d3.randomUniform(1, 10);
</script>
```

Try d3-random in your browser.

## API Reference

# d3.**randomUniform**([*min*, ][*max*]) <>

Returns a function for generating random numbers with a uniform distribution. The minimum allowed value of a returned number is *min*, and the maximum is *max*. If *min* is not specified, it defaults to 0; if *max* is not specified, it defaults to 1. For example:

```
d3.randomUniform(6)(); // Returns a number greater than or equal to 0 and less than 6.
d3.randomUniform(1, 5)(); // Returns a number greater than or equal to 1 and less than 5.
```

Note that you can also use the built-in Math.random to generate uniform distributions directly. For example, to generate a random integer between 0 and 99 (inclusive), you can say `Math.random() * 100 | 0`

.

# d3.**randomNormal**([*mu*][, *sigma*]) <>

Returns a function for generating random numbers with a normal (Gaussian) distribution. The expected value of the generated numbers is *mu*, with the given standard deviation *sigma*. If *mu* is not specified, it defaults to 0; if *sigma* is not specified, it defaults to 1.

# d3.**randomLogNormal**([*mu*][, *sigma*]) <>

Returns a function for generating random numbers with a log-normal distribution. The expected value of the random variable’s natural logarithm is *mu*, with the given standard deviation *sigma*. If *mu* is not specified, it defaults to 0; if *sigma* is not specified, it defaults to 1.

Returns a function for generating random numbers with a Bates distribution with *n* independent variables.

Returns a function for generating random numbers with an Irwin–Hall distribution with *n* independent variables.

# d3.**randomExponential**(*lambda*) <>

Returns a function for generating random numbers with an exponential distribution with the rate *lambda*; equivalent to time between events in a Poisson process with a mean of 1 / *lambda*. For example, exponential(1/40) generates random times between events where, on average, one event occurs every 40 units of time.

# *random*.**source**(*source*)

Returns the same type of function for generating random numbers but where the given random number generator *source* is used as the source of randomness instead of Math.random. The given random number generator must implement the same interface as Math.random and only return values in the range [0, 1). This is useful when a seeded random number generator is preferable to Math.random. For example:

```
var d3 = require("d3-random"),
seedrandom = require("seedrandom"),
random = d3.randomNormal.source(seedrandom("a22ebc7c488a3a47"))(0, 1);
random(); // 0.9744193494813501
```