# 🎲 perchance A lightweight, quick, and easy-to-use library for generating and using randomness, designed for the most common use cases you find in games and geometry. Note that `perchance` is **not** cryptographically secure and ***should not*** be used in contexts where security is a concern. ## Usage `perchance` is a simple random number generation library, tuned for ease of use: create an instance of `PerchanceContext` and go. ```rust let mut rng = perchance::PerchanceContext::new(seed); let between_0_and_1 = rng.uniform_f32(); let dice_roll = rng.uniform_range_i32(1..=6); let random_direction = rng.uniform_sphere_surface_vec3(); let thing_should_happen = rng.get_bool(); enum Event { Thing1, Thing2, Thing3, } let which_should_happen = rng.choose(&[Event::Thing1, Event::Thing2, Event::Thing3]); ``` You can also use the global `perchance::global()` if you have the `std` feature enabled: ```rust // Seed the global context first. You may do so manually, or, on platforms that support it, // obtain a seed to pass into it by calling `perchance::gen_time_seed()`. perchance::seed_global(0x5F3759DF); // ;) let mut rng = perchance::global(); let between_0_and_1 = rng.uniform_f32(); ``` ## Contributing We welcome community contributions to this project. Please read our [Contributor Guide](CONTRIBUTING.md) for more information on how to get started. ## License Licensed under either of * Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or ) * MIT license ([LICENSE-MIT](LICENSE-MIT) or ) at your option. ### Contribution Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.