Consider the following code.
No matter the amount of random seeds, it only generates 8 unique outputs.
// main.rs
use simdnoise::NoiseBuilder;
use sha1::{Sha1, Digest};
use rand::Rng;
use hex::ToHex;
use std::collections::HashMap;
fn main() {
let width = 100;
let height = 100;
let mut ground = vec!(0; width * height);
let mut subjcts = HashMap::new();
for i in 0..10000 {
let mut rng = rand::thread_rng();
let seed: u32 = rng.gen();
let noise = NoiseBuilder::fbm_2d(width, height)
.with_seed(seed as i32)
.generate_scaled(0., 255.);
for i in 0..width * height {
ground[i] = noise[i] as u8;
}
let mut hasher = Sha1::new();
hasher.update(&ground);
let result = hasher.finalize();
let hash_s = result.encode_hex::<String>();
*subjcts.entry(hash_s).or_insert(1) += 1;
}
// list results
for (key, val) in subjcts.iter() {
println!("key_is: {} val_is: {}", key, val);
}
}
// Cargo.toml
[package]
name = "simdnoise_seed"
version = "0.1.0"
edition = "2021"
[dependencies]
simdnoise = "3.1.6"
sha1 = "0.10"
hex = "0.4"
rand = "0.8"
output:
key_is: 32b00bf03c164bfa480e4a373a3d4f0e35dcda0e val_is: 1285
key_is: ed23a933cb23296682262fb2a88d227e69e8125d val_is: 1238
key_is: 05da58ef01dbed6fea816c02ca26cdb0930370ab val_is: 1214
key_is: 5cc514182aed4af4aa8406df2ce8639285b3b81e val_is: 1269
key_is: 61e8492dc6f75223d8459674a0dce7b679cc3cd3 val_is: 1275
key_is: 1f85d6aec7b530746c838c357f8adeaa4daf9816 val_is: 1220
key_is: 5811b7b15cd5c36b2efafd6f0d77863d60b98e54 val_is: 1212
key_is: 8628b18331c4e637c5ecb1224ba6abca78ab450e val_is: 1295
Consider the following code.
No matter the amount of random seeds, it only generates 8 unique outputs.
output: