#random #bevy #gamedev #fastrand #weighted #element #rantz-spatial2d

rantz_random

Mostly just a wrapper around fastrand for a bunch of types. Supports bevy and rantz_spatial2d.

8 releases

new 0.4.5 Jun 24, 2024
0.4.4 Jun 20, 2024
0.3.7 May 30, 2024

#278 in Game dev

Download history 287/week @ 2024-05-26 370/week @ 2024-06-02 15/week @ 2024-06-09 310/week @ 2024-06-16

982 downloads per month

MIT/Apache

27KB
757 lines

rantz_random

A simple Rust library for generating random values using fastrand. Basically just a fastrand wrapper for a few additional types at the moment. Likely to grow over time. Designed for use with Bevy.

Can generate random values for:

  • i8-128
  • u8-128
  • f32 & f64
  • Vec2/3/4, UVec2/3/4, and IVec2/3/4 (with the bevy feature)
  • Color (with the bevy feature)
  • Degrees, Radians, Position2D, and all the compasses (with the spatial2d feature) - Requires rantz_spatial2d

Can generate random values in a range for:

  • i8-128
  • u8-128
  • f32 & f64
  • Vec2/3/4, UVec2/3/4, and IVec2/3/4 (with the bevy feature)
  • Degrees, Radians, and Position2D (with the spatial2d feature) - Requires rantz_spatial2d

Can shuffle anything Clone + IntoIterator<T> + FromIterator<T> as well as returning a random element, or random index.

Also includes a WeightedTable class for use in weighted random generation.

Usage

Add to your Cargo.toml. Use rantz_random::*; to get access to the traits that define random generation.

Determinism

This crate relies on fastrand which is "deterministic". That is to say, for a given seed value, assuming system order is deterministic, the results will be deterministic.

For gaurenteed determinism, any system that uses the features of this crate will need to be .chain()ed together when added to a Bevy app.

Dependencies

~19–58MB
~1M SLoC