# `WeightedRandom.Utils.Types`
[🔗](https://github.com/greetingsfellowhumans/weighted_random/blob/main/lib/weighted_random/utils/types.ex#L1)

# `curve_spec`

```elixir
@type curve_spec() :: atom() | [{number(), number()}]
```

Anything compatible with `Curves.define_bezier/3`.

# `opts`

```elixir
@type opts() :: keyword()
```

See function docs for details.

# `outcomes`

```elixir
@type outcomes() :: [...] | Range.t()
```

The values to be randomly picked from.

# `probabilities`

```elixir
@type probabilities() :: [float()]
```

A list of floats, representing percentages, that should add up to 1.0

# `weight_spec`

```elixir
@type weight_spec() :: %{
  :target =&gt; any(),
  required(:amount | :weight) =&gt; number(),
  optional(:left_dist) =&gt; integer(),
  optional(:right_dist) =&gt; integer(),
  optional(:radius) =&gt; integer(),
  optional(:curve) =&gt; curve_spec()
}
```

The weight, as given by the end user, which will influence the randomization.

---

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