# `Moar.Random`
[🔗](https://github.com/synchronal/moar/blob/main/lib/random.ex#L1)

Generates random data.

# `encoding`

```elixir
@type encoding() :: :base32 | :base64
```

# `dom_id`

```elixir
@spec dom_id(String.t()) :: String.t()
```

Returns a string that starts with `prefix` (defaults to "id") followed by a dash, followed by 10 random lowercase
letters and numbers, like `foo-ag49cl29zd` or `id-ag49cl29zd`.

# `float`

```elixir
@spec float(number(), number()) :: float()
```

Return a random float greater than or equal to `min` and less than `max`

# `fuzz`

```elixir
@spec fuzz(number(), number()) :: number()
```

Randomly increases or decreases `number` by a random amount up to `percent` of `number`.
For example, `Etc.Random.fuzz(100, 0.2)` could return a number as low as 80.0 or as high as 120.0.

```elixir
iex> n = Etc.Random.fuzz(100, 0.2)
iex> n <= 120 && n >= 80
true
iex> n > 120 || n <= 80
false
```

# `integer`

```elixir
@spec integer(max :: pos_integer()) :: pos_integer()
```

Returns a random integer between `0` and `max`.

# `string`

```elixir
@spec string(encoding :: encoding()) :: binary()
```

Returns a base64- or base32-encoded random string of 32 characters.
See `Moar.Random.string/2`.

# `string`

```elixir
@spec string(character_count :: pos_integer(), encoding :: encoding()) :: binary()
```

Returns a base64- or base32-encoded random string of given length.

```elixir
iex> Moar.Random.string()
"Sr/y4m/YiVSJcIgI5lG+76vMfaZ7KZ7c"
iex> Moar.Random.string(5)
"9pJrK"
iex> Moar.Random.string(5, :base32)
"AC53Z"
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
