tequel-rs 0.8.2

A high-performance, Dual-Wide SIMD cryptographic engine and hash function, built in pure Rust for modern x86_64 architectures.
Documentation
# Random Number Generator


## Summary


- [Random Number Generator]#random-number-generator
  - [Summary]#summary
  - [Time]#time
    - [`rand_by_nano`]#rand_by_nano
  - [LGC (Linear Congruential Generator)]#lgc-linear-congruential-generator
    - [`rand_lgc`]#rand_lgc
  - [From Hardware/OS]#from-hardwareos
    - [`rand_deep_string`]#rand_deep_string
    - [`rand_u32`]#rand_u32
  - [Range]#range
    - [`rand_range`]#rand_range


## Time


### `rand_by_nano`


Generates a combination of random numbers from `SystemTime::subsec_nanos` combined with four constants (`u32`).

```rust
use tequel_rs::rng::TequelRng;

fn main() -> Result<(), Box<dyn std::error::Error>> {

    let tequel_rng: TequelRng = TequelRng::new();

    let rand = tequel_rng.rand_by_nano();

    println!("{}", rand);

    Ok(())

}
```

```bash
2045930856
```


## LGC (Linear Congruential Generator)


### `rand_lgc`


Generates a number from a `seed` delivered as parameter. If `seed` is equal, number will be equal too.

```rust
use tequel_rs::rng::TequelRng;

fn main() -> Result<(), Box<dyn std::error::Error>> {

    let tequel_rng: TequelRng = TequelRng::new();

    let seed: u32 = 2026; // <-- Your seed

    let rand1: u32 = tequel_rng.rand_lgc(seed);
    let rand2: u32 = tequel_rng.rand_lgc(seed);

    println!("NUM1: {}", rand1);
    println!("NUM2: {}", rand2);

    Ok(())

}
```

```bash
NUM1: 77654757
NUM2: 77654757
```


## From Hardware/OS


### `rand_deep_string`



Generates a set of numbers and letters with custom length provided. `getrandom::getrandom` lib + some constants, that is used to get *Network noises*, *Keyboard* and others hardware's information.

```rust
use tequel_rs::rng::TequelRng;

fn main() -> Result<(), Box<dyn std::error::Error>> {

    let tequel_rng: TequelRng = TequelRng::new();

    let rand1: u32 = tequel_rng.rand_deep_string(8); // generates an u32 of 8 bytes

    let rand2: u32 = tequel_rng.rand_deep_string(16); // generates an u32 of 16 bytes

    println!("rand1: {}", rand1);
    println!("rand2: {}", rand2);

    Ok(())

}
```

```bash
rand1: e3016e1fdc8dbe98
rand2: 698fe1747b02f3122b890cf0ea11b6c0
```

### `rand_u32`


Generates a set of random numbers only using `getrandom::getrandom`. 

```rust
use tequel_rs::rng::TequelRng;

fn main() -> Result<(), Box<dyn std::error::Error>> {

    let tequel_rng: TequelRng = TequelRng::new();

    let rand1: u32 = tequel_rng.rand_u32();
    println!("rand1: {}", rand1);

    Ok(())

}
```

```bash
rand1: 4250173843
```


## Range 


### `rand_range`


Generates a number between `min` and `max` using `rand_u32`.


```rust
use tequel_rs::rng::TequelRng;

fn main() -> Result<(), Box<dyn std::error::Error>> {

    let tequel_rng: TequelRng = TequelRng::new();
    let mut r = String::new();

    // I will generate 10 numbers
    for _ in 0..9 {
        // Generate number between 0 and 10
        let n = tequel_rng.rand_weak(0, 10);
        
        let p = format!("{} ", n);
        r.push_str(&p);
    }

    println!("{}", r);

    Ok(())

}
```

```bash
9 2 1 10 9 2 5 2 6
```