# `Monty.Frameworks.Actions.ActionSamplers.ConstantSampler`
[🔗](https://github.com/d-led/ex.tbp.monty/blob/v0.1.0/packages/ex_tbp_monty_core/lib/monty/frameworks/actions/action_samplers/constant_sampler.ex#L1)

Makes actions whose parameters never change.

Mirrors `tbp/monty/frameworks/actions/action_samplers.py::ConstantSampler`.
Every parameter is set once, at construction, and every action of a kind is
identical: `rotation_degrees` for the turning actions,
`translation_distance` for the moving ones, `direction`, `location` and
`rotation_quat` for the ones that take a place or an orientation.

This is the sampler experiments use when the point is the *policy* rather than
the randomness: a surface agent that always steps 4 mm and turns 5 degrees has
a reproducible path given a reproducible sequence of action choices.

# `t`

```elixir
@type t() :: %Monty.Frameworks.Actions.ActionSamplers.ConstantSampler{
  absolute_degrees: float(),
  actions: [module()],
  direction: [float()],
  location: [float()],
  rotation_degrees: float(),
  rotation_quat: {float(), float(), float(), float()},
  translation_distance: float()
}
```

# `new`

```elixir
@spec new(keyword()) :: t()
```

A sampler that always makes this step of every action it is asked for.

`:actions` is which actions it can make; every other option is Monty's
default and can be overridden per parameter.

---

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