summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorflu0r1ne <flu0r1ne@flu0r1ne.net>2023-12-04 19:49:09 -0600
committerflu0r1ne <flu0r1ne@flu0r1ne.net>2023-12-04 19:49:09 -0600
commited8c65d93049baf123d8557c3b59bd7530131cf5 (patch)
treeddf9ae7415f6eff47ad3d65dcd9d17fa04216daa
downloadhash-function-testing-appendix-ed8c65d93049baf123d8557c3b59bd7530131cf5.tar.xz
hash-function-testing-appendix-ed8c65d93049baf123d8557c3b59bd7530131cf5.zip
Add READMEHEADmain
-rw-r--r--README3
-rw-r--r--compute_collision_distribution.rs241
-rw-r--r--more_results/private_ips.md216
-rw-r--r--more_results/unique_kmers.md216
-rw-r--r--more_results/word_lists.md653
-rw-r--r--more_results/wordlist_collisions.md50
6 files changed, 1379 insertions, 0 deletions
diff --git a/README b/README
new file mode 100644
index 0000000..50f04d2
--- /dev/null
+++ b/README
@@ -0,0 +1,3 @@
+Extra Data and Scripts
+
+See [https://flu0r1ne.net/logs/simple_hash_functions](https://flu0r1ne.net/logs/simple_hash_functions)
diff --git a/compute_collision_distribution.rs b/compute_collision_distribution.rs
new file mode 100644
index 0000000..8a44fe8
--- /dev/null
+++ b/compute_collision_distribution.rs
@@ -0,0 +1,241 @@
+// Requires clap and statrs
+
+use statrs::function::gamma::ln_gamma;
+use std::f64::consts::E;
+use clap::Parser;
+
+struct LnGammaCache {
+ n: usize,
+ k: usize,
+ n_log: f64,
+ // contains [0, k] which represents [1, k+1]
+ lk_tab: Vec<f64>,
+ // contains [n-k, n]
+ hk_tab: Vec<f64>,
+}
+
+impl LnGammaCache {
+
+ fn precompute_ktab(&mut self, n: usize) {
+ for k in 0..=self.k {
+ self.lk_tab[k] = ln_gamma((k + 1) as f64);
+ self.hk_tab[k] = ln_gamma((n - k + 1) as f64);
+ }
+ }
+
+ fn new(n: usize, k: usize) -> Self {
+ let mut cache = LnGammaCache {
+ n,
+ k,
+ n_log: (n as f64).ln(),
+ lk_tab: vec![0f64; k+1],
+ hk_tab: vec![0f64; k+1],
+ };
+
+ cache.precompute_ktab(n);
+
+ cache
+ }
+
+ unsafe fn ln_gamma_unchecked(&self, i: usize) -> f64 {
+ unsafe {
+ if i <= self.k + 1 {
+ debug_assert!(i > 0, "Uncached call to ln_gamma");
+ return *self.lk_tab.get_unchecked(i - 1)
+ } else {
+ debug_assert!(self.n - self.k <= i && i <= self.n + 1, "Uncached call to ln_gamma");
+ return *self.hk_tab.get_unchecked(self.n - (i - 1))
+ }
+ }
+ }
+}
+
+// The performance is dependent heavily on the execution time of this function
+// After many optimizations, powf is the most computationally expensive unit in this routine
+fn evaluate_probability_log_gamma(
+ partition: &[usize],
+ k: usize,
+ n: usize,
+ maxpart: usize,
+ cache: &LnGammaCache,
+) -> f64 {
+ let mut c0 = 0;
+
+ for i in 0..maxpart {
+ c0 += partition[i];
+ }
+
+ c0 = n - c0;
+
+ let log_probability = unsafe {
+ let mut log_denominator = (k as f64) * cache.n_log + cache.ln_gamma_unchecked(c0 + 1);
+ let log_numerator = cache.ln_gamma_unchecked(n + 1) + cache.ln_gamma_unchecked(k + 1);
+
+ for i in 0..maxpart {
+ log_denominator += cache.ln_gamma_unchecked(partition[i] + 1);
+ log_denominator += (partition[i] as f64) * cache.ln_gamma_unchecked(i + 2);
+ }
+
+ log_numerator - log_denominator
+ };
+
+ E.powf(log_probability)
+}
+
+fn evaluate_probability(
+ partition: &[usize],
+ probdist: &mut [f64],
+ k: usize,
+ n: usize,
+ maxpart: usize,
+ cache: &LnGammaCache
+) {
+ let mut collisions = 0usize;
+
+ for i in 1..maxpart {
+ collisions += i * partition[i];
+ }
+
+ probdist[collisions] += evaluate_probability_log_gamma(partition, k, n, maxpart, cache);
+}
+
+fn generate_partitions_dfs(
+ partition: &mut [usize],
+ probdist: &mut [f64],
+ k: usize,
+ n: usize,
+ n_collisions: usize,
+ collision_ub: usize,
+ level_ub: &[usize],
+ cache: &LnGammaCache,
+) {
+ if n_collisions > collision_ub {
+ return;
+ }
+
+ generate_partitions_dfs(partition, probdist, k, n, n_collisions + 1, collision_ub, level_ub, cache);
+
+ let mut n_subcomb = partition[0] / n_collisions;
+
+ n_subcomb = std::cmp::min(n_subcomb, level_ub[n_collisions - 1]);
+
+ for i in 1..=n_subcomb {
+ partition[0] -= i * n_collisions;
+ partition[n_collisions- 1] += i;
+
+ evaluate_probability(partition, probdist, k, n, n_collisions, cache);
+
+ generate_partitions_dfs(partition, probdist, k, n, n_collisions + 1, collision_ub, level_ub, cache);
+
+ partition[0] += i * n_collisions;
+ partition[n_collisions - 1] -= i;
+ }
+}
+
+fn generate_partitions(
+ k: usize,
+ n: usize,
+ collision_ub: usize,
+ level_ub: &[usize],
+) -> Vec<f64> {
+ let mut partitions = vec![0usize; k];
+ let mut probdist = vec![0f64; k];
+
+ partitions[0] = k;
+
+ let cache = LnGammaCache::new(n, k);
+
+ if collision_ub > 0 {
+ evaluate_probability(&partitions, &mut probdist, k, n, 1, &cache);
+ }
+
+ if collision_ub > 1 {
+ generate_partitions_dfs(&mut partitions, &mut probdist, k, n, 2, collision_ub, level_ub, &cache);
+ }
+
+ return probdist;
+}
+
+fn parse_max_level_collisions(s: &str) -> Vec<usize> {
+ let mut max_sizes = Vec::new();
+
+ let mut add_token = |token: &str| {
+ let sz = match token.parse::<usize>() {
+ Ok(res) => res,
+ Err(err) => {
+ eprintln!("Failed to parse max sizes: {}", err);
+ std::process::exit(1);
+ }
+ };
+
+ max_sizes.push(sz);
+ };
+
+ let mut i = 0usize;
+ while let Some(j) = s[i..].find(',') {
+ add_token(&s[i..i+j]);
+ i += j + 1;
+ }
+ add_token(&s[i..]);
+
+ max_sizes
+}
+
+#[derive(Parser,Debug)]
+#[command(author, version, about)]
+struct Args {
+ n: usize,
+ k: usize,
+ // Only consider collisions up until this bound (inclusive)
+ // For collision_ub=4, combinations of zero, one, two, three, and four
+ // collisions are calculated
+ collision_ub: Option<usize>,
+ // Only consider collisions up to level_ub_l collisions for level l.
+ // For example, if level_ub_3 = 10 this means we only consider scenarios
+ // in which three hashes co-collide up to 10 times
+ level_ub: Option<String>,
+}
+
+fn main() {
+ let args = Args::parse();
+
+ if args.n == 0 || args.k == 0 {
+ return;
+ }
+
+ if args.k >= args.n {
+ eprintln!("This computation is optimized for k < n.");
+ std::process::exit(1);
+ }
+
+ let collision_ub = match args.collision_ub {
+ Some(ub) => {
+ if ub > args.k {
+ eprintln!("collision_ub={} hashes cannot collide if only k={} values are hashed", ub, args.k);
+ }
+
+ ub
+ },
+ None => args.k
+ };
+
+ let level_ub: Vec<usize>;
+
+ if let Some(ub_spec) = args.level_ub {
+ level_ub = parse_max_level_collisions(&ub_spec[..]);
+
+ if level_ub.len() != collision_ub {
+ eprintln!("Please specify {} bounds for each level", collision_ub);
+ std::process::exit(1);
+ }
+
+ } else {
+ level_ub = vec![args.k; collision_ub + 1];
+ }
+
+ let probdist = generate_partitions(args.k, args.n, collision_ub, &level_ub[..]);
+
+ for i in 0..probdist.len() {
+ println!("{},{}", i, probdist[i]);
+ }
+}
diff --git a/more_results/private_ips.md b/more_results/private_ips.md
new file mode 100644
index 0000000..f3cd08e
--- /dev/null
+++ b/more_results/private_ips.md
@@ -0,0 +1,216 @@
+Markdown Table for Test: uniform_hashing_cc1024
+
+| hash_function | p_value | average | p50 | p75 | p99 |
+|:----------------|----------:|----------:|------:|------:|------:|
+| city64 | 0.230767 | 17472 | 17469 | 17561 | 17782 |
+| city32 | 0.558145 | 17472 | 17478 | 17562 | 17775 |
+| xx64 | 0.031247 | 17472 | 17465 | 17566 | 17799 |
+| xx32 | 0.994406 | 17472 | 17471 | 17549 | 17765 |
+| spooky64 | 0.846546 | 17472 | 17475 | 17554 | 17773 |
+| spooky32 | 0.846546 | 17472 | 17475 | 17554 | 17773 |
+| murmur3 32 | 0.129905 | 17472 | 17471 | 17557 | 17808 |
+| fnv1a64 | 1 | 17472 | 17473 | 17473 | 17474 |
+| fnv1a32 | 1 | 17472 | 17472 | 17472 | 17477 |
+| adler32 | 0 | 17472 | 8778 | 34828 | 52401 |
+| djb2_32 | 1 | 17472 | 17478 | 17506 | 17550 |
+| djb2_64 | 1 | 17472 | 17478 | 17506 | 17550 |
+
+
+Markdown Table for Test: uniform_hashing_cc1031
+
+| hash_function | p_value | average | p50 | p75 | p99 |
+|:----------------|----------:|----------:|------:|------:|------:|
+| city64 | 0.95754 | 17353.4 | 17351 | 17439 | 17642 |
+| city32 | 0.373201 | 17353.4 | 17354 | 17440 | 17667 |
+| xx64 | 0.456405 | 17353.4 | 17354 | 17446 | 17654 |
+| xx32 | 0.875385 | 17353.4 | 17355 | 17438 | 17667 |
+| spooky64 | 0.580813 | 17353.4 | 17356 | 17443 | 17628 |
+| spooky32 | 0.293832 | 17353.4 | 17355 | 17444 | 17655 |
+| murmur3 32 | 0.980679 | 17353.4 | 17356 | 17434 | 17640 |
+| fnv1a64 | 1 | 17353.4 | 17354 | 17362 | 17380 |
+| fnv1a32 | 1 | 17353.4 | 17352 | 17393 | 17430 |
+| adler32 | 1 | 17353.4 | 17355 | 17376 | 17391 |
+| djb2_32 | 1 | 17353.4 | 17352 | 17367 | 17375 |
+| djb2_64 | 1 | 17353.4 | 17352 | 17367 | 17375 |
+
+
+Markdown Table for Test: uniform_hashing_cc1048576
+
+| hash_function | p_value | average | p50 | p75 | p99 |
+|:----------------|----------:|----------:|------:|------:|------:|
+| city64 | 0.145143 | 17.0625 | 17 | 20 | 27 |
+| city32 | 0.108375 | 17.0625 | 17 | 20 | 27 |
+| xx64 | 0.97483 | 17.0625 | 17 | 20 | 27 |
+| xx32 | 0.987949 | 17.0625 | 17 | 20 | 27 |
+| spooky64 | 0.852969 | 17.0625 | 17 | 20 | 27 |
+| spooky32 | 0.852969 | 17.0625 | 17 | 20 | 27 |
+| murmur3 32 | 0.967775 | 17.0625 | 17 | 20 | 27 |
+| fnv1a64 | 1 | 17.0625 | 17 | 18 | 21 |
+| fnv1a32 | 1 | 17.0625 | 17 | 18 | 21 |
+| adler32 | 0 | 17.0625 | 0 | 0 | 104 |
+| djb2_32 | 0 | 17.0625 | 0 | 54 | 64 |
+| djb2_64 | 0 | 17.0625 | 0 | 54 | 64 |
+
+
+Markdown Table for Test: uniform_hashing_cc1048583
+
+| hash_function | p_value | average | p50 | p75 | p99 |
+|:----------------|-----------:|----------:|------:|------:|------:|
+| city64 | 0.635537 | 17.0624 | 17 | 20 | 27 |
+| city32 | 0.00348005 | 17.0624 | 17 | 20 | 27 |
+| xx64 | 0.157894 | 17.0624 | 17 | 20 | 27 |
+| xx32 | 0.994068 | 17.0624 | 17 | 20 | 27 |
+| spooky64 | 0.344088 | 17.0624 | 17 | 20 | 27 |
+| spooky32 | 0.258544 | 17.0624 | 17 | 20 | 27 |
+| murmur3 32 | 0.999932 | 17.0624 | 17 | 20 | 27 |
+| fnv1a64 | 1 | 17.0624 | 17 | 19 | 25 |
+| fnv1a32 | 1 | 17.0624 | 17 | 19 | 25 |
+| adler32 | 0 | 17.0624 | 0 | 0 | 0 |
+| djb2_32 | 0 | 17.0624 | 0 | 54 | 64 |
+| djb2_64 | 0 | 17.0624 | 0 | 54 | 64 |
+
+
+Markdown Table for Test: uniform_hashing_cc25559040
+
+| hash_function | p_value | average | p50 | p75 | p99 |
+|:----------------|----------:|----------:|------:|------:|------:|
+| city64 | 0.857053 | 0.7 | 1 | 1 | 3 |
+| city32 | 0.628311 | 0.7 | 1 | 1 | 3 |
+| xx64 | 0.32052 | 0.7 | 1 | 1 | 3 |
+| xx32 | 1 | 0.7 | 1 | 1 | 3 |
+| spooky64 | 0.658844 | 0.7 | 1 | 1 | 3 |
+| spooky32 | 0.677696 | 0.7 | 1 | 1 | 3 |
+| murmur3 32 | 1 | 0.7 | 1 | 1 | 3 |
+| fnv1a64 | 1 | 0.7 | 1 | 1 | 2 |
+| fnv1a32 | 1 | 0.7 | 1 | 1 | 3 |
+| adler32 | 0 | 0.7 | 0 | 0 | 0 |
+| djb2_32 | 0 | 0.7 | 0 | 0 | 55 |
+| djb2_64 | 0 | 0.7 | 0 | 0 | 55 |
+
+
+Markdown Table for Test: uniform_hashing_cc25559057
+
+| hash_function | p_value | average | p50 | p75 | p99 |
+|:----------------|----------:|----------:|------:|------:|------:|
+| city64 | 0.727569 | 0.7 | 1 | 1 | 3 |
+| city32 | 0.738734 | 0.7 | 1 | 1 | 3 |
+| xx64 | 0.510211 | 0.7 | 1 | 1 | 3 |
+| xx32 | 1 | 0.7 | 1 | 1 | 3 |
+| spooky64 | 0.331874 | 0.7 | 1 | 1 | 3 |
+| spooky32 | 0.823507 | 0.7 | 1 | 1 | 3 |
+| murmur3 32 | 1 | 0.7 | 1 | 1 | 3 |
+| fnv1a64 | 1 | 0.7 | 1 | 1 | 3 |
+| fnv1a32 | 1 | 0.7 | 1 | 1 | 3 |
+| adler32 | 0 | 0.7 | 0 | 0 | 0 |
+| djb2_32 | 0 | 0.7 | 0 | 0 | 55 |
+| djb2_64 | 0 | 0.7 | 0 | 0 | 55 |
+
+
+Markdown Table for Test: uniform_hashing_cc3578265
+
+| hash_function | p_value | average | p50 | p75 | p99 |
+|:----------------|----------:|----------:|------:|------:|------:|
+| city64 | 0.378096 | 5 | 5 | 6 | 11 |
+| city32 | 0.712853 | 5 | 5 | 6 | 11 |
+| xx64 | 0.960154 | 5 | 5 | 6 | 11 |
+| xx32 | 1 | 5 | 5 | 6 | 11 |
+| spooky64 | 0.0731617 | 5 | 5 | 6 | 11 |
+| spooky32 | 0.430761 | 5 | 5 | 6 | 11 |
+| murmur3 32 | 0.999998 | 5 | 5 | 6 | 11 |
+| fnv1a64 | 1 | 5 | 5 | 6 | 9 |
+| fnv1a32 | 0 | 5 | 5 | 7 | 11 |
+| adler32 | 0 | 5 | 0 | 0 | 161 |
+| djb2_32 | 0 | 5 | 0 | 0 | 64 |
+| djb2_64 | 0 | 5 | 0 | 0 | 64 |
+
+
+Markdown Table for Test: uniform_hashing_cc3578273
+
+| hash_function | p_value | average | p50 | p75 | p99 |
+|:----------------|----------:|----------:|------:|------:|------:|
+| city64 | 0.690345 | 4.99999 | 5 | 6 | 11 |
+| city32 | 0.832129 | 4.99999 | 5 | 6 | 11 |
+| xx64 | 0.248531 | 4.99999 | 5 | 6 | 11 |
+| xx32 | 1 | 4.99999 | 5 | 6 | 11 |
+| spooky64 | 0.887816 | 4.99999 | 5 | 6 | 11 |
+| spooky32 | 0.682764 | 4.99999 | 5 | 6 | 11 |
+| murmur3 32 | 1 | 4.99999 | 5 | 6 | 11 |
+| fnv1a64 | 1 | 4.99999 | 5 | 6 | 10 |
+| fnv1a32 | 0 | 4.99999 | 4 | 7 | 14 |
+| adler32 | 0 | 4.99999 | 0 | 0 | 216 |
+| djb2_32 | 0 | 4.99999 | 0 | 0 | 64 |
+| djb2_64 | 0 | 4.99999 | 0 | 0 | 64 |
+
+
+Markdown Table for Test: uniform_hashing_cc65536
+
+| hash_function | p_value | average | p50 | p75 | p99 |
+|:----------------|----------:|----------:|------:|------:|------:|
+| city64 | 0.161976 | 273 | 273 | 284 | 313 |
+| city32 | 0.550778 | 273 | 273 | 284 | 312 |
+| xx64 | 0.150364 | 273 | 273 | 284 | 312 |
+| xx32 | 0.962877 | 273 | 273 | 284 | 312 |
+| spooky64 | 0.960136 | 273 | 273 | 284 | 312 |
+| spooky32 | 0.960136 | 273 | 273 | 284 | 312 |
+| murmur3 32 | 0.229322 | 273 | 273 | 284 | 312 |
+| fnv1a64 | 1 | 273 | 273 | 278 | 284 |
+| fnv1a32 | 1 | 273 | 273 | 275 | 280 |
+| adler32 | 0 | 273 | 0 | 0 | 1653 |
+| djb2_32 | 0 | 273 | 254 | 303 | 372 |
+| djb2_64 | 0 | 273 | 254 | 303 | 372 |
+
+
+Markdown Table for Test: uniform_hashing_cc65537
+
+| hash_function | p_value | average | p50 | p75 | p99 |
+|:----------------|----------:|----------:|------:|------:|------:|
+| city64 | 0.266184 | 272.996 | 273 | 284 | 312 |
+| city32 | 0.242501 | 272.996 | 273 | 284 | 312 |
+| xx64 | 0.825592 | 272.996 | 273 | 284 | 312 |
+| xx32 | 0.685109 | 272.996 | 273 | 284 | 312 |
+| spooky64 | 0.220356 | 272.996 | 273 | 284 | 312 |
+| spooky32 | 0.860006 | 272.996 | 273 | 284 | 312 |
+| murmur3 32 | 0.271432 | 272.996 | 273 | 284 | 312 |
+| fnv1a64 | 1 | 272.996 | 273 | 279 | 292 |
+| fnv1a32 | 1 | 272.996 | 273 | 278 | 290 |
+| adler32 | 0 | 272.996 | 0 | 0 | 9216 |
+| djb2_32 | 0 | 272.996 | 254 | 303 | 372 |
+| djb2_64 | 0 | 272.996 | 254 | 303 | 372 |
+
+
+Markdown Table for Test: uniform_hashing_cc894566
+
+| hash_function | p_value | average | p50 | p75 | p99 |
+|:----------------|----------:|----------:|------:|------:|------:|
+| city64 | 0.505677 | 20 | 20 | 23 | 31 |
+| city32 | 0.0662779 | 20 | 20 | 23 | 31 |
+| xx64 | 0.546583 | 20 | 20 | 23 | 31 |
+| xx32 | 0.999814 | 20 | 20 | 23 | 31 |
+| spooky64 | 0.380997 | 20 | 20 | 23 | 31 |
+| spooky32 | 0.834555 | 20 | 20 | 23 | 31 |
+| murmur3 32 | 0.999999 | 20 | 20 | 23 | 31 |
+| fnv1a64 | 1 | 20 | 20 | 22 | 27 |
+| fnv1a32 | 1 | 20 | 20 | 22 | 27 |
+| adler32 | 0 | 20 | 0 | 0 | 199 |
+| djb2_32 | 0 | 20 | 0 | 56 | 64 |
+| djb2_64 | 0 | 20 | 0 | 56 | 64 |
+
+
+Markdown Table for Test: uniform_hashing_cc894581
+
+| hash_function | p_value | average | p50 | p75 | p99 |
+|:----------------|----------:|----------:|------:|------:|------:|
+| city64 | 0.764774 | 19.9997 | 20 | 23 | 31 |
+| city32 | 0.727845 | 19.9997 | 20 | 23 | 31 |
+| xx64 | 0.509764 | 19.9997 | 20 | 23 | 31 |
+| xx32 | 1 | 19.9997 | 20 | 23 | 31 |
+| spooky64 | 0.953046 | 19.9997 | 20 | 23 | 31 |
+| spooky32 | 0.589859 | 19.9997 | 20 | 23 | 31 |
+| murmur3 32 | 0.999997 | 19.9997 | 20 | 23 | 31 |
+| fnv1a64 | 1 | 19.9997 | 20 | 22 | 27 |
+| fnv1a32 | 1 | 19.9997 | 20 | 22 | 27 |
+| adler32 | 0 | 19.9997 | 0 | 12 | 128 |
+| djb2_32 | 0 | 19.9997 | 0 | 56 | 64 |
+| djb2_64 | 0 | 19.9997 | 0 | 56 | 64 |
+
+
diff --git a/more_results/unique_kmers.md b/more_results/unique_kmers.md
new file mode 100644
index 0000000..97979dc
--- /dev/null
+++ b/more_results/unique_kmers.md
@@ -0,0 +1,216 @@
+Markdown Table for Test: uniform_hashing_cc10154571
+
+| hash_function | p_value | average | p50 | p75 | p99 |
+|:----------------|----------:|----------:|------:|------:|------:|
+| city64 | 0.92768 | 20 | 20 | 23 | 31 |
+| city32 | 0.81495 | 20 | 20 | 23 | 31 |
+| xx64 | 0.428362 | 20 | 20 | 23 | 31 |
+| xx32 | 0.443643 | 20 | 20 | 23 | 31 |
+| spooky64 | 0.710552 | 20 | 20 | 23 | 31 |
+| spooky32 | 0.470957 | 20 | 20 | 23 | 31 |
+| murmur3 32 | 0.87193 | 20 | 20 | 23 | 31 |
+| fnv1a64 | 0.965098 | 20 | 20 | 23 | 31 |
+| fnv1a32 | 0.0950747 | 20 | 20 | 23 | 31 |
+| adler32 | 0 | 20 | 0 | 0 | 16 |
+| djb2_32 | 1 | 20 | 20 | 23 | 31 |
+| djb2_64 | 0 | 20 | 20 | 23 | 32 |
+
+
+Markdown Table for Test: uniform_hashing_cc10154591
+
+| hash_function | p_value | average | p50 | p75 | p99 |
+|:----------------|----------:|----------:|------:|------:|------:|
+| city64 | 0.0832877 | 20 | 20 | 23 | 31 |
+| city32 | 0.356531 | 20 | 20 | 23 | 31 |
+| xx64 | 0.478113 | 20 | 20 | 23 | 31 |
+| xx32 | 0.715534 | 20 | 20 | 23 | 31 |
+| spooky64 | 0.62229 | 20 | 20 | 23 | 31 |
+| spooky32 | 0.864127 | 20 | 20 | 23 | 31 |
+| murmur3 32 | 0.768138 | 20 | 20 | 23 | 31 |
+| fnv1a64 | 0.516048 | 20 | 20 | 23 | 31 |
+| fnv1a32 | 0.466016 | 20 | 20 | 23 | 31 |
+| adler32 | 0 | 20 | 0 | 0 | 16 |
+| djb2_32 | 0 | 20 | 20 | 23 | 31 |
+| djb2_64 | 1 | 20 | 20 | 23 | 31 |
+
+
+Markdown Table for Test: uniform_hashing_cc1024
+
+| hash_function | p_value | average | p50 | p75 | p99 |
+|:----------------|----------:|----------:|-------:|-------:|-----------------:|
+| city64 | 0.618559 | 198331 | 198319 | 198622 | 199392 |
+| city32 | 0.317945 | 198331 | 198337 | 198645 | 199297 |
+| xx64 | 0.959837 | 198331 | 198316 | 198593 | 199285 |
+| xx32 | 0.981496 | 198331 | 198342 | 198607 | 199367 |
+| spooky64 | 0.385608 | 198331 | 198316 | 198623 | 199444 |
+| spooky32 | 0.385608 | 198331 | 198316 | 198623 | 199444 |
+| murmur3 32 | 0.899585 | 198331 | 198342 | 198629 | 199278 |
+| fnv1a64 | 0 | 198331 | 198295 | 198826 | 200069 |
+| fnv1a32 | 0 | 198331 | 198335 | 198845 | 200319 |
+| adler32 | 0 | 198331 | 0 | 0 | 3.56064e+06 |
+| djb2_32 | 0 | 198331 | 195174 | 268731 | 317468 |
+| djb2_64 | 0 | 198331 | 195174 | 268731 | 317468 |
+
+
+Markdown Table for Test: uniform_hashing_cc1031
+
+| hash_function | p_value | average | p50 | p75 | p99 |
+|:----------------|----------:|----------:|-------:|-------:|-------:|
+| city64 | 0.0332254 | 196985 | 196967 | 197311 | 198122 |
+| city32 | 0.286917 | 196985 | 196968 | 197291 | 198012 |
+| xx64 | 0.3964 | 196985 | 196983 | 197291 | 198023 |
+| xx32 | 0.238287 | 196985 | 196981 | 197296 | 198046 |
+| spooky64 | 0.507568 | 196985 | 196973 | 197291 | 198037 |
+| spooky32 | 0.407503 | 196985 | 196977 | 197288 | 198029 |
+| murmur3 32 | 0.655587 | 196985 | 196989 | 197311 | 198007 |
+| fnv1a64 | 0.220912 | 196985 | 196987 | 197288 | 198050 |
+| fnv1a32 | 0.899356 | 196985 | 196980 | 197277 | 197956 |
+| adler32 | 0 | 196985 | 196947 | 198662 | 201562 |
+| djb2_32 | 1 | 196985 | 196979 | 197210 | 197787 |
+| djb2_64 | 0 | 196985 | 196957 | 197363 | 198265 |
+
+
+Markdown Table for Test: uniform_hashing_cc1048576
+
+| hash_function | p_value | average | p50 | p75 | p99 |
+|:----------------|----------:|----------:|------:|------:|------:|
+| city64 | 0.418615 | 193.683 | 194 | 203 | 227 |
+| city32 | 0.677713 | 193.683 | 194 | 203 | 227 |
+| xx64 | 0.438462 | 193.683 | 194 | 203 | 227 |
+| xx32 | 0.63458 | 193.683 | 194 | 203 | 227 |
+| spooky64 | 0.110016 | 193.683 | 194 | 203 | 227 |
+| spooky32 | 0.110016 | 193.683 | 194 | 203 | 227 |
+| murmur3 32 | 0.470181 | 193.683 | 194 | 203 | 227 |
+| fnv1a64 | 0.239946 | 193.683 | 194 | 203 | 227 |
+| fnv1a32 | 0.382158 | 193.683 | 194 | 203 | 227 |
+| adler32 | 0 | 193.683 | 0 | 0 | 0 |
+| djb2_32 | 0 | 193.683 | 191 | 260 | 325 |
+| djb2_64 | 0 | 193.683 | 191 | 260 | 325 |
+
+
+Markdown Table for Test: uniform_hashing_cc1048583
+
+| hash_function | p_value | average | p50 | p75 | p99 |
+|:----------------|----------:|----------:|------:|------:|------:|
+| city64 | 0.107083 | 193.682 | 194 | 203 | 227 |
+| city32 | 0.347326 | 193.682 | 194 | 203 | 227 |
+| xx64 | 0.477662 | 193.682 | 194 | 203 | 227 |
+| xx32 | 0.0579428 | 193.682 | 194 | 203 | 227 |
+| spooky64 | 0.106589 | 193.682 | 194 | 203 | 227 |
+| spooky32 | 0.960906 | 193.682 | 194 | 203 | 227 |
+| murmur3 32 | 0.0550249 | 193.682 | 194 | 203 | 227 |
+| fnv1a64 | 0.841848 | 193.682 | 194 | 203 | 227 |
+| fnv1a32 | 0.1136 | 193.682 | 193 | 203 | 227 |
+| adler32 | 0 | 193.682 | 0 | 0 | 6 |
+| djb2_32 | 1 | 193.682 | 194 | 203 | 227 |
+| djb2_64 | 4.48e-14 | 193.682 | 194 | 203 | 227 |
+
+
+Markdown Table for Test: uniform_hashing_cc290130625
+
+| hash_function | p_value | average | p50 | p75 | p99 |
+|:----------------|------------:|----------:|------:|------:|------:|
+| city64 | 0.567872 | 0.7 | 1 | 1 | 3 |
+| city32 | 8.5713e-09 | 0.7 | 1 | 1 | 3 |
+| xx64 | 0.0503037 | 0.7 | 1 | 1 | 3 |
+| xx32 | 0.000792609 | 0.7 | 1 | 1 | 3 |
+| spooky64 | 0.0415268 | 0.7 | 1 | 1 | 3 |
+| spooky32 | 1.90627e-06 | 0.7 | 1 | 1 | 3 |
+| murmur3 32 | 1.57968e-07 | 0.7 | 1 | 1 | 3 |
+| fnv1a64 | 0.833133 | 0.7 | 1 | 1 | 3 |
+| fnv1a32 | 1.01819e-10 | 0.7 | 1 | 1 | 3 |
+| adler32 | 0 | 0.7 | 0 | 0 | 0 |
+| djb2_32 | 0.00151188 | 0.7 | 1 | 1 | 3 |
+| djb2_64 | 0.0428499 | 0.7 | 1 | 1 | 3 |
+
+
+Markdown Table for Test: uniform_hashing_cc290130647
+
+| hash_function | p_value | average | p50 | p75 | p99 |
+|:----------------|------------:|----------:|------:|------:|------:|
+| city64 | 0.926155 | 0.7 | 1 | 1 | 3 |
+| city32 | 3.628e-13 | 0.7 | 1 | 1 | 3 |
+| xx64 | 0.517712 | 0.7 | 1 | 1 | 3 |
+| xx32 | 4.6282e-08 | 0.7 | 1 | 1 | 3 |
+| spooky64 | 0.974397 | 0.7 | 1 | 1 | 3 |
+| spooky32 | 2.47895e-10 | 0.7 | 1 | 1 | 3 |
+| murmur3 32 | 2.57632e-05 | 0.7 | 1 | 1 | 3 |
+| fnv1a64 | 0.456291 | 0.7 | 1 | 1 | 3 |
+| fnv1a32 | 5.48456e-10 | 0.7 | 1 | 1 | 3 |
+| adler32 | 0 | 0.7 | 0 | 0 | 0 |
+| djb2_32 | 1 | 0.7 | 1 | 1 | 3 |
+| djb2_64 | 9.95204e-10 | 0.7 | 1 | 1 | 3 |
+
+
+Markdown Table for Test: uniform_hashing_cc40618287
+
+| hash_function | p_value | average | p50 | p75 | p99 |
+|:----------------|----------:|----------:|------:|------:|------:|
+| city64 | 0.191269 | 5 | 5 | 6 | 11 |
+| city32 | 0.661944 | 5 | 5 | 6 | 11 |
+| xx64 | 0.930678 | 5 | 5 | 6 | 11 |
+| xx32 | 0.62422 | 5 | 5 | 6 | 11 |
+| spooky64 | 0.738669 | 5 | 5 | 6 | 11 |
+| spooky32 | 0.132022 | 5 | 5 | 6 | 11 |
+| murmur3 32 | 0.129412 | 5 | 5 | 6 | 11 |
+| fnv1a64 | 0.514203 | 5 | 5 | 6 | 11 |
+| fnv1a32 | 0.757831 | 5 | 5 | 6 | 11 |
+| adler32 | 0 | 5 | 0 | 0 | 0 |
+| djb2_32 | 0 | 5 | 5 | 6 | 11 |
+| djb2_64 | 0 | 5 | 5 | 7 | 12 |
+
+
+Markdown Table for Test: uniform_hashing_cc40618309
+
+| hash_function | p_value | average | p50 | p75 | p99 |
+|:----------------|----------:|----------:|------:|------:|------:|
+| city64 | 0.235064 | 5 | 5 | 6 | 11 |
+| city32 | 0.0328106 | 5 | 5 | 6 | 11 |
+| xx64 | 0.0807737 | 5 | 5 | 6 | 11 |
+| xx32 | 0.855038 | 5 | 5 | 6 | 11 |
+| spooky64 | 0.0857559 | 5 | 5 | 6 | 11 |
+| spooky32 | 0.297429 | 5 | 5 | 6 | 11 |
+| murmur3 32 | 0.272447 | 5 | 5 | 6 | 11 |
+| fnv1a64 | 0.684465 | 5 | 5 | 6 | 11 |
+| fnv1a32 | 0.393569 | 5 | 5 | 6 | 11 |
+| adler32 | 0 | 5 | 0 | 0 | 0 |
+| djb2_32 | 1 | 5 | 5 | 6 | 11 |
+| djb2_64 | 0 | 5 | 5 | 6 | 11 |
+
+
+Markdown Table for Test: uniform_hashing_cc65536
+
+| hash_function | p_value | average | p50 | p75 | p99 |
+|:----------------|----------:|----------:|------:|------:|------:|
+| city64 | 0.808561 | 3098.93 | 3099 | 3136 | 3229 |
+| city32 | 0.238145 | 3098.93 | 3099 | 3136 | 3229 |
+| xx64 | 0.0837374 | 3098.93 | 3099 | 3137 | 3230 |
+| xx32 | 0.388023 | 3098.93 | 3099 | 3137 | 3229 |
+| spooky64 | 0.0890488 | 3098.93 | 3099 | 3136 | 3230 |
+| spooky32 | 0.0890488 | 3098.93 | 3099 | 3136 | 3230 |
+| murmur3 32 | 0.754288 | 3098.93 | 3099 | 3136 | 3230 |
+| fnv1a64 | 1 | 3098.93 | 3099 | 3136 | 3227 |
+| fnv1a32 | 0.99998 | 3098.93 | 3099 | 3136 | 3228 |
+| adler32 | 0 | 3098.93 | 0 | 0 | 0 |
+| djb2_32 | 0 | 3098.93 | 3054 | 4210 | 4975 |
+| djb2_64 | 0 | 3098.93 | 3054 | 4210 | 4975 |
+
+
+Markdown Table for Test: uniform_hashing_cc65537
+
+| hash_function | p_value | average | p50 | p75 | p99 |
+|:----------------|----------:|----------:|------:|------:|-------:|
+| city64 | 0.84711 | 3098.88 | 3099 | 3136 | 3229 |
+| city32 | 0.765502 | 3098.88 | 3099 | 3136 | 3227 |
+| xx64 | 0.995706 | 3098.88 | 3099 | 3136 | 3228 |
+| xx32 | 0.898945 | 3098.88 | 3099 | 3136 | 3229 |
+| spooky64 | 0.899433 | 3098.88 | 3099 | 3137 | 3228 |
+| spooky32 | 0.26549 | 3098.88 | 3098 | 3136 | 3229 |
+| murmur3 32 | 0.47607 | 3098.88 | 3099 | 3136 | 3228 |
+| fnv1a64 | 0.999163 | 3098.88 | 3099 | 3136 | 3229 |
+| fnv1a32 | 0.160831 | 3098.88 | 3099 | 3137 | 3229 |
+| adler32 | 0 | 3098.88 | 0 | 0 | 142116 |
+| djb2_32 | 0 | 3098.88 | 3098 | 3173 | 3304 |
+| djb2_64 | 0 | 3098.88 | 3099 | 3138 | 3234 |
+
+
diff --git a/more_results/word_lists.md b/more_results/word_lists.md
new file mode 100644
index 0000000..6029944
--- /dev/null
+++ b/more_results/word_lists.md
@@ -0,0 +1,653 @@
+# GERMAN:
+
+Markdown Table for Test: uniform_hashing_cc1024
+
+| hash_function | p_value | average | p50 | p75 | p99 |
+|:----------------|----------:|----------:|------:|------:|------:|
+| city64 | 0.041558 | 297.594 | 298 | 309 | 341 |
+| city32 | 0.558001 | 297.594 | 298 | 310 | 338 |
+| xx64 | 0.0619553 | 297.594 | 298 | 309 | 342 |
+| xx32 | 0.146449 | 297.594 | 297 | 310 | 340 |
+| spooky64 | 0.978192 | 297.594 | 297 | 309 | 337 |
+| spooky32 | 0.978192 | 297.594 | 297 | 309 | 337 |
+| murmur3 32 | 0.288355 | 297.594 | 298 | 309 | 335 |
+| fnv1a64 | 0.073901 | 297.594 | 298 | 309 | 340 |
+| fnv1a32 | 0.19892 | 297.594 | 297 | 310 | 340 |
+| adler32 | 0 | 297.594 | 271 | 357 | 548 |
+| djb2_32 | 0.499734 | 297.594 | 298 | 309 | 336 |
+| djb2_64 | 0.499734 | 297.594 | 298 | 309 | 336 |
+
+
+Markdown Table for Test: uniform_hashing_cc1031
+
+| hash_function | p_value | average | p50 | p75 | p99 |
+|:----------------|----------:|----------:|------:|------:|------:|
+| city64 | 0.394728 | 295.573 | 295 | 307 | 336 |
+| city32 | 0.658379 | 295.573 | 295 | 306 | 337 |
+| xx64 | 0.349555 | 295.573 | 295 | 307 | 335 |
+| xx32 | 0.809289 | 295.573 | 295 | 307 | 335 |
+| spooky64 | 0.944751 | 295.573 | 295 | 307 | 333 |
+| spooky32 | 0.0605966 | 295.573 | 296 | 307 | 339 |
+| murmur3 32 | 0.421352 | 295.573 | 295 | 307 | 339 |
+| fnv1a64 | 0.224086 | 295.573 | 296 | 307 | 337 |
+| fnv1a32 | 0.84226 | 295.573 | 295 | 306 | 336 |
+| adler32 | 0.784829 | 295.573 | 295 | 307 | 337 |
+| djb2_32 | 0.992628 | 295.573 | 296 | 306 | 332 |
+| djb2_64 | 0.487786 | 295.573 | 296 | 308 | 334 |
+
+
+Markdown Table for Test: uniform_hashing_cc1048576
+
+| hash_function | p_value | average | p50 | p75 | p99 |
+|:----------------|-----------:|----------:|------:|------:|------:|
+| city64 | 0.385564 | 0.290619 | 0 | 1 | 2 |
+| city32 | 0.242151 | 0.290619 | 0 | 1 | 2 |
+| xx64 | 0.995672 | 0.290619 | 0 | 1 | 2 |
+| xx32 | 0.234796 | 0.290619 | 0 | 1 | 2 |
+| spooky64 | 0.47495 | 0.290619 | 0 | 1 | 2 |
+| spooky32 | 0.47495 | 0.290619 | 0 | 1 | 2 |
+| murmur3 32 | 0.728204 | 0.290619 | 0 | 1 | 2 |
+| fnv1a64 | 0.00273877 | 0.290619 | 0 | 1 | 2 |
+| fnv1a32 | 0.752845 | 0.290619 | 0 | 1 | 2 |
+| adler32 | 0 | 0.290619 | 0 | 0 | 11 |
+| djb2_32 | 0.578694 | 0.290619 | 0 | 1 | 2 |
+| djb2_64 | 0.578694 | 0.290619 | 0 | 1 | 2 |
+
+
+Markdown Table for Test: uniform_hashing_cc1048583
+
+| hash_function | p_value | average | p50 | p75 | p99 |
+|:----------------|----------:|----------:|------:|------:|------:|
+| city64 | 0.34051 | 0.290617 | 0 | 1 | 2 |
+| city32 | 0.867548 | 0.290617 | 0 | 1 | 2 |
+| xx64 | 0.921409 | 0.290617 | 0 | 1 | 2 |
+| xx32 | 0.444225 | 0.290617 | 0 | 1 | 2 |
+| spooky64 | 0.149649 | 0.290617 | 0 | 1 | 2 |
+| spooky32 | 0.791163 | 0.290617 | 0 | 1 | 2 |
+| murmur3 32 | 0.470608 | 0.290617 | 0 | 1 | 2 |
+| fnv1a64 | 0.0921704 | 0.290617 | 0 | 1 | 2 |
+| fnv1a32 | 0.96332 | 0.290617 | 0 | 1 | 2 |
+| adler32 | 0 | 0.290617 | 0 | 0 | 7 |
+| djb2_32 | 0.0875519 | 0.290617 | 0 | 1 | 2 |
+| djb2_64 | 0.0166127 | 0.290617 | 0 | 1 | 2 |
+
+
+Markdown Table for Test: uniform_hashing_cc15236
+
+| hash_function | p_value | average | p50 | p75 | p99 |
+|:----------------|-----------:|----------:|------:|------:|------:|
+| city64 | 0.420456 | 20.0011 | 20 | 23 | 31 |
+| city32 | 0.165579 | 20.0011 | 20 | 23 | 31 |
+| xx64 | 0.291638 | 20.0011 | 20 | 23 | 31 |
+| xx32 | 0.622994 | 20.0011 | 20 | 23 | 31 |
+| spooky64 | 0.0946716 | 20.0011 | 20 | 23 | 31 |
+| spooky32 | 0.510134 | 20.0011 | 20 | 23 | 31 |
+| murmur3 32 | 0.623648 | 20.0011 | 20 | 23 | 31 |
+| fnv1a64 | 0.654609 | 20.0011 | 20 | 23 | 31 |
+| fnv1a32 | 0.867607 | 20.0011 | 20 | 23 | 31 |
+| adler32 | 8.1166e-12 | 20.0011 | 20 | 23 | 32 |
+| djb2_32 | 0.0366084 | 20.0011 | 20 | 23 | 31 |
+| djb2_64 | 0.703943 | 20.0011 | 20 | 23 | 31 |
+
+
+Markdown Table for Test: uniform_hashing_cc15241
+
+| hash_function | p_value | average | p50 | p75 | p99 |
+|:----------------|----------:|----------:|------:|------:|------:|
+| city64 | 0.748606 | 19.9945 | 20 | 23 | 31 |
+| city32 | 0.820535 | 19.9945 | 20 | 23 | 31 |
+| xx64 | 0.255614 | 19.9945 | 20 | 23 | 31 |
+| xx32 | 0.990785 | 19.9945 | 20 | 23 | 31 |
+| spooky64 | 0.173036 | 19.9945 | 20 | 23 | 31 |
+| spooky32 | 0.975584 | 19.9945 | 20 | 23 | 31 |
+| murmur3 32 | 0.690768 | 19.9945 | 20 | 23 | 31 |
+| fnv1a64 | 0.115464 | 19.9945 | 20 | 23 | 31 |
+| fnv1a32 | 0.731618 | 19.9945 | 20 | 23 | 31 |
+| adler32 | 0 | 19.9945 | 19 | 27 | 46 |
+| djb2_32 | 0.636943 | 19.9945 | 20 | 23 | 31 |
+| djb2_64 | 0.242599 | 19.9945 | 20 | 23 | 31 |
+
+
+Markdown Table for Test: uniform_hashing_cc435337
+
+| hash_function | p_value | average | p50 | p75 | p99 |
+|:----------------|----------:|----------:|------:|------:|------:|
+| city64 | 0.433201 | 0.7 | 1 | 1 | 3 |
+| city32 | 0.81538 | 0.7 | 1 | 1 | 3 |
+| xx64 | 0.46347 | 0.7 | 1 | 1 | 3 |
+| xx32 | 0.737051 | 0.7 | 1 | 1 | 3 |
+| spooky64 | 0.0797217 | 0.7 | 1 | 1 | 3 |
+| spooky32 | 0.390342 | 0.7 | 1 | 1 | 3 |
+| murmur3 32 | 0.696641 | 0.7 | 1 | 1 | 3 |
+| fnv1a64 | 0.0207139 | 0.7 | 1 | 1 | 3 |
+| fnv1a32 | 0.648008 | 0.7 | 1 | 1 | 3 |
+| adler32 | 0 | 0.7 | 0 | 1 | 4 |
+| djb2_32 | 0.110557 | 0.7 | 1 | 1 | 3 |
+| djb2_64 | 0.0788193 | 0.7 | 1 | 1 | 3 |
+
+
+Markdown Table for Test: uniform_hashing_cc435343
+
+| hash_function | p_value | average | p50 | p75 | p99 |
+|:----------------|----------:|----------:|------:|------:|------:|
+| city64 | 0.267782 | 0.699991 | 1 | 1 | 3 |
+| city32 | 0.247058 | 0.699991 | 1 | 1 | 3 |
+| xx64 | 0.247058 | 0.699991 | 1 | 1 | 3 |
+| xx32 | 0.190387 | 0.699991 | 1 | 1 | 3 |
+| spooky64 | 0.910564 | 0.699991 | 1 | 1 | 3 |
+| spooky32 | 0.942652 | 0.699991 | 1 | 1 | 3 |
+| murmur3 32 | 0.114368 | 0.699991 | 1 | 1 | 3 |
+| fnv1a64 | 0.596277 | 0.699991 | 1 | 1 | 3 |
+| fnv1a32 | 0.0309772 | 0.699991 | 1 | 1 | 3 |
+| adler32 | 0 | 0.699991 | 0 | 1 | 4 |
+| djb2_32 | 0.156004 | 0.699991 | 1 | 1 | 3 |
+| djb2_64 | 0.376937 | 0.699991 | 1 | 1 | 3 |
+
+
+Markdown Table for Test: uniform_hashing_cc60947
+
+| hash_function | p_value | average | p50 | p75 | p99 |
+|:----------------|----------:|----------:|------:|------:|------:|
+| city64 | 0.0931069 | 5.00002 | 5 | 6 | 11 |
+| city32 | 0.503809 | 5.00002 | 5 | 6 | 11 |
+| xx64 | 0.855692 | 5.00002 | 5 | 6 | 11 |
+| xx32 | 0.486444 | 5.00002 | 5 | 6 | 11 |
+| spooky64 | 0.528014 | 5.00002 | 5 | 6 | 11 |
+| spooky32 | 0.237041 | 5.00002 | 5 | 6 | 11 |
+| murmur3 32 | 0.256877 | 5.00002 | 5 | 6 | 11 |
+| fnv1a64 | 0.0530683 | 5.00002 | 5 | 6 | 11 |
+| fnv1a32 | 0.200032 | 5.00002 | 5 | 6 | 11 |
+| adler32 | 0 | 5.00002 | 5 | 7 | 12 |
+| djb2_32 | 0.824424 | 5.00002 | 5 | 6 | 11 |
+| djb2_64 | 0.996742 | 5.00002 | 5 | 6 | 11 |
+
+
+Markdown Table for Test: uniform_hashing_cc60953
+
+| hash_function | p_value | average | p50 | p75 | p99 |
+|:----------------|----------:|----------:|------:|------:|------:|
+| city64 | 0.242358 | 4.99952 | 5 | 6 | 11 |
+| city32 | 0.296624 | 4.99952 | 5 | 6 | 11 |
+| xx64 | 0.688777 | 4.99952 | 5 | 6 | 11 |
+| xx32 | 0.208769 | 4.99952 | 5 | 6 | 11 |
+| spooky64 | 0.76734 | 4.99952 | 5 | 6 | 11 |
+| spooky32 | 0.244506 | 4.99952 | 5 | 6 | 11 |
+| murmur3 32 | 0.725851 | 4.99952 | 5 | 6 | 11 |
+| fnv1a64 | 0.218747 | 4.99952 | 5 | 6 | 11 |
+| fnv1a32 | 0.70164 | 4.99952 | 5 | 6 | 11 |
+| adler32 | 0 | 4.99952 | 5 | 7 | 12 |
+| djb2_32 | 0.408676 | 4.99952 | 5 | 6 | 11 |
+| djb2_64 | 0.873225 | 4.99952 | 5 | 6 | 11 |
+
+
+Markdown Table for Test: uniform_hashing_cc65536
+
+| hash_function | p_value | average | p50 | p75 | p99 |
+|:----------------|----------:|----------:|------:|------:|------:|
+| city64 | 0.933094 | 4.6499 | 4 | 6 | 10 |
+| city32 | 0.191151 | 4.6499 | 4 | 6 | 10 |
+| xx64 | 0.733225 | 4.6499 | 4 | 6 | 10 |
+| xx32 | 0.14227 | 4.6499 | 4 | 6 | 10 |
+| spooky64 | 0.504951 | 4.6499 | 4 | 6 | 10 |
+| spooky32 | 0.504951 | 4.6499 | 4 | 6 | 10 |
+| murmur3 32 | 0.521058 | 4.6499 | 4 | 6 | 10 |
+| fnv1a64 | 0.171198 | 4.6499 | 4 | 6 | 10 |
+| fnv1a32 | 0.66977 | 4.6499 | 4 | 6 | 10 |
+| adler32 | 0 | 4.6499 | 0 | 0 | 181 |
+| djb2_32 | 0.29764 | 4.6499 | 4 | 6 | 10 |
+| djb2_64 | 0.29764 | 4.6499 | 4 | 6 | 10 |
+
+
+Markdown Table for Test: uniform_hashing_cc65537
+
+| hash_function | p_value | average | p50 | p75 | p99 |
+|:----------------|----------:|----------:|------:|------:|------:|
+| city64 | 0.611665 | 4.64983 | 4 | 6 | 10 |
+| city32 | 0.584069 | 4.64983 | 4 | 6 | 10 |
+| xx64 | 0.618484 | 4.64983 | 4 | 6 | 10 |
+| xx32 | 0.139147 | 4.64983 | 4 | 6 | 10 |
+| spooky64 | 0.235203 | 4.64983 | 4 | 6 | 10 |
+| spooky32 | 0.973042 | 4.64983 | 4 | 6 | 10 |
+| murmur3 32 | 0.985551 | 4.64983 | 4 | 6 | 10 |
+| fnv1a64 | 0.0545812 | 4.64983 | 4 | 6 | 10 |
+| fnv1a32 | 0.839165 | 4.64983 | 4 | 6 | 10 |
+| adler32 | 0 | 4.64983 | 0 | 3 | 53 |
+| djb2_32 | 0.0877072 | 4.64983 | 4 | 6 | 10 |
+| djb2_64 | 0.807369 | 4.64983 | 4 | 6 | 10 |
+
+# FRENCH:
+
+
+Markdown Table for Test: uniform_hashing_cc1024
+
+| hash_function | p_value | average | p50 | p75 | p99 |
+|:----------------|----------:|----------:|------:|------:|------:|
+| city64 | 0.550163 | 216.188 | 216 | 226 | 250 |
+| city32 | 0.285732 | 216.188 | 216 | 226 | 251 |
+| xx64 | 0.807002 | 216.188 | 216 | 226 | 250 |
+| xx32 | 0.305058 | 216.188 | 216 | 226 | 252 |
+| spooky64 | 0.888406 | 216.188 | 216 | 226 | 249 |
+| spooky32 | 0.888406 | 216.188 | 216 | 226 | 249 |
+| murmur3 32 | 0.630937 | 216.188 | 216 | 225 | 252 |
+| fnv1a64 | 0.985093 | 216.188 | 215 | 225 | 249 |
+| fnv1a32 | 0.998118 | 216.188 | 216 | 226 | 249 |
+| adler32 | 0 | 216.188 | 210 | 284 | 392 |
+| djb2_32 | 0.718091 | 216.188 | 216 | 226 | 251 |
+| djb2_64 | 0.718091 | 216.188 | 216 | 226 | 251 |
+
+
+Markdown Table for Test: uniform_hashing_cc1031
+
+| hash_function | p_value | average | p50 | p75 | p99 |
+|:----------------|-----------:|----------:|------:|------:|------:|
+| city64 | 0.805079 | 214.721 | 215 | 224 | 247 |
+| city32 | 0.006272 | 214.721 | 215 | 225 | 252 |
+| xx64 | 0.542885 | 214.721 | 215 | 224 | 247 |
+| xx32 | 0.16067 | 214.721 | 214 | 226 | 249 |
+| spooky64 | 0.894639 | 214.721 | 215 | 224 | 248 |
+| spooky32 | 0.00910567 | 214.721 | 214 | 224 | 255 |
+| murmur3 32 | 0.339932 | 214.721 | 214 | 224 | 250 |
+| fnv1a64 | 0.441032 | 214.721 | 214 | 225 | 251 |
+| fnv1a32 | 0.34276 | 214.721 | 214 | 225 | 249 |
+| adler32 | 0.429931 | 214.721 | 214 | 225 | 249 |
+| djb2_32 | 0.653496 | 214.721 | 214 | 224 | 252 |
+| djb2_64 | 0.450892 | 214.721 | 215 | 224 | 251 |
+
+
+Markdown Table for Test: uniform_hashing_cc1048576
+
+| hash_function | p_value | average | p50 | p75 | p99 |
+|:----------------|----------:|----------:|------:|------:|------:|
+| city64 | 0.383135 | 0.211122 | 0 | 0 | 2 |
+| city32 | 0.403253 | 0.211122 | 0 | 0 | 2 |
+| xx64 | 0.918924 | 0.211122 | 0 | 0 | 2 |
+| xx32 | 0.355992 | 0.211122 | 0 | 0 | 2 |
+| spooky64 | 0.691776 | 0.211122 | 0 | 0 | 2 |
+| spooky32 | 0.691776 | 0.211122 | 0 | 0 | 2 |
+| murmur3 32 | 0.459758 | 0.211122 | 0 | 0 | 2 |
+| fnv1a64 | 0.926509 | 0.211122 | 0 | 0 | 2 |
+| fnv1a32 | 0.914917 | 0.211122 | 0 | 0 | 2 |
+| adler32 | 0 | 0.211122 | 0 | 0 | 9 |
+| djb2_32 | 0.207886 | 0.211122 | 0 | 0 | 2 |
+| djb2_64 | 0.207886 | 0.211122 | 0 | 0 | 2 |
+
+
+Markdown Table for Test: uniform_hashing_cc1048583
+
+| hash_function | p_value | average | p50 | p75 | p99 |
+|:----------------|-----------:|----------:|------:|------:|------:|
+| city64 | 0.00212581 | 0.21112 | 0 | 0 | 2 |
+| city32 | 0.851575 | 0.21112 | 0 | 0 | 2 |
+| xx64 | 0.803264 | 0.21112 | 0 | 0 | 2 |
+| xx32 | 0.532318 | 0.21112 | 0 | 0 | 2 |
+| spooky64 | 0.61427 | 0.21112 | 0 | 0 | 2 |
+| spooky32 | 0.395282 | 0.21112 | 0 | 0 | 2 |
+| murmur3 32 | 0.0970737 | 0.21112 | 0 | 0 | 2 |
+| fnv1a64 | 0.668011 | 0.21112 | 0 | 0 | 2 |
+| fnv1a32 | 0.0373909 | 0.21112 | 0 | 0 | 2 |
+| adler32 | 0 | 0.21112 | 0 | 0 | 6 |
+| djb2_32 | 0.969158 | 0.21112 | 0 | 0 | 2 |
+| djb2_64 | 0.0274959 | 0.21112 | 0 | 0 | 2 |
+
+
+Markdown Table for Test: uniform_hashing_cc11068
+
+| hash_function | p_value | average | p50 | p75 | p99 |
+|:----------------|-----------:|----------:|------:|------:|------:|
+| city64 | 0.186158 | 20.0015 | 20 | 23 | 32 |
+| city32 | 0.257467 | 20.0015 | 20 | 23 | 31 |
+| xx64 | 0.224814 | 20.0015 | 20 | 23 | 31 |
+| xx32 | 0.557047 | 20.0015 | 20 | 23 | 31 |
+| spooky64 | 0.794821 | 20.0015 | 20 | 23 | 31 |
+| spooky32 | 0.83405 | 20.0015 | 20 | 23 | 31 |
+| murmur3 32 | 0.00611424 | 20.0015 | 20 | 23 | 31 |
+| fnv1a64 | 0.633899 | 20.0015 | 20 | 23 | 31 |
+| fnv1a32 | 0.02508 | 20.0015 | 20 | 23 | 31 |
+| adler32 | 0 | 20.0015 | 20 | 23 | 33 |
+| djb2_32 | 0.848171 | 20.0015 | 20 | 23 | 31 |
+| djb2_64 | 0.976627 | 20.0015 | 20 | 23 | 31 |
+
+
+Markdown Table for Test: uniform_hashing_cc11069
+
+| hash_function | p_value | average | p50 | p75 | p99 |
+|:----------------|----------:|----------:|------:|------:|------:|
+| city64 | 0.197799 | 19.9997 | 20 | 23 | 31 |
+| city32 | 0.865495 | 19.9997 | 20 | 23 | 31 |
+| xx64 | 0.321344 | 19.9997 | 20 | 23 | 31 |
+| xx32 | 0.967086 | 19.9997 | 20 | 23 | 31 |
+| spooky64 | 0.819659 | 19.9997 | 20 | 23 | 31 |
+| spooky32 | 0.249329 | 19.9997 | 20 | 23 | 31 |
+| murmur3 32 | 0.410576 | 19.9997 | 20 | 23 | 31 |
+| fnv1a64 | 0.329056 | 19.9997 | 20 | 23 | 31 |
+| fnv1a32 | 0.781696 | 19.9997 | 20 | 23 | 31 |
+| adler32 | 0 | 19.9997 | 20 | 24 | 34 |
+| djb2_32 | 0.056648 | 19.9997 | 20 | 23 | 31 |
+| djb2_64 | 0.0991769 | 19.9997 | 20 | 23 | 31 |
+
+
+Markdown Table for Test: uniform_hashing_cc316252
+
+| hash_function | p_value | average | p50 | p75 | p99 |
+|:----------------|----------:|----------:|------:|------:|------:|
+| city64 | 0.240331 | 0.700002 | 1 | 1 | 3 |
+| city32 | 0.0357533 | 0.700002 | 1 | 1 | 3 |
+| xx64 | 0.0586968 | 0.700002 | 1 | 1 | 3 |
+| xx32 | 0.0795463 | 0.700002 | 1 | 1 | 3 |
+| spooky64 | 0.506559 | 0.700002 | 1 | 1 | 3 |
+| spooky32 | 0.633021 | 0.700002 | 1 | 1 | 3 |
+| murmur3 32 | 0.676703 | 0.700002 | 1 | 1 | 3 |
+| fnv1a64 | 0.92868 | 0.700002 | 1 | 1 | 3 |
+| fnv1a32 | 0.302013 | 0.700002 | 1 | 1 | 3 |
+| adler32 | 0 | 0.700002 | 0 | 1 | 4 |
+| djb2_32 | 0.879881 | 0.700002 | 1 | 1 | 3 |
+| djb2_64 | 0.616665 | 0.700002 | 1 | 1 | 3 |
+
+
+Markdown Table for Test: uniform_hashing_cc316259
+
+| hash_function | p_value | average | p50 | p75 | p99 |
+|:----------------|----------:|----------:|------:|------:|------:|
+| city64 | 0.914632 | 0.699986 | 1 | 1 | 3 |
+| city32 | 0.508401 | 0.699986 | 1 | 1 | 3 |
+| xx64 | 0.615685 | 0.699986 | 1 | 1 | 3 |
+| xx32 | 0.482609 | 0.699986 | 1 | 1 | 3 |
+| spooky64 | 0.119459 | 0.699986 | 1 | 1 | 3 |
+| spooky32 | 0.238418 | 0.699986 | 1 | 1 | 3 |
+| murmur3 32 | 0.938549 | 0.699986 | 1 | 1 | 3 |
+| fnv1a64 | 0.407505 | 0.699986 | 1 | 1 | 3 |
+| fnv1a32 | 0.817404 | 0.699986 | 1 | 1 | 3 |
+| adler32 | 0 | 0.699986 | 0 | 1 | 4 |
+| djb2_32 | 0.951339 | 0.699986 | 1 | 1 | 3 |
+| djb2_64 | 0.622532 | 0.699986 | 1 | 1 | 3 |
+
+
+Markdown Table for Test: uniform_hashing_cc44275
+
+| hash_function | p_value | average | p50 | p75 | p99 |
+|:----------------|----------:|----------:|------:|------:|------:|
+| city64 | 0.646968 | 5.00005 | 5 | 6 | 11 |
+| city32 | 0.716956 | 5.00005 | 5 | 6 | 11 |
+| xx64 | 0.621656 | 5.00005 | 5 | 6 | 11 |
+| xx32 | 0.0809766 | 5.00005 | 5 | 6 | 11 |
+| spooky64 | 0.968113 | 5.00005 | 5 | 6 | 11 |
+| spooky32 | 0.407234 | 5.00005 | 5 | 6 | 11 |
+| murmur3 32 | 0.397881 | 5.00005 | 5 | 6 | 11 |
+| fnv1a64 | 0.937163 | 5.00005 | 5 | 6 | 11 |
+| fnv1a32 | 0.327051 | 5.00005 | 5 | 6 | 11 |
+| adler32 | 0 | 5.00005 | 5 | 7 | 14 |
+| djb2_32 | 0.022312 | 5.00005 | 5 | 6 | 11 |
+| djb2_64 | 0 | 5.00005 | 3 | 7 | 25 |
+
+
+Markdown Table for Test: uniform_hashing_cc44279
+
+| hash_function | p_value | average | p50 | p75 | p99 |
+|:----------------|----------:|----------:|------:|------:|------:|
+| city64 | 0.255933 | 4.99959 | 5 | 6 | 11 |
+| city32 | 0.464304 | 4.99959 | 5 | 6 | 11 |
+| xx64 | 0.936332 | 4.99959 | 5 | 6 | 11 |
+| xx32 | 0.917436 | 4.99959 | 5 | 6 | 11 |
+| spooky64 | 0.943586 | 4.99959 | 5 | 6 | 11 |
+| spooky32 | 0.020863 | 4.99959 | 5 | 6 | 11 |
+| murmur3 32 | 0.504471 | 4.99959 | 5 | 6 | 11 |
+| fnv1a64 | 0.758638 | 4.99959 | 5 | 6 | 11 |
+| fnv1a32 | 0.337275 | 4.99959 | 5 | 6 | 11 |
+| adler32 | 0 | 4.99959 | 5 | 7 | 13 |
+| djb2_32 | 0.78235 | 4.99959 | 5 | 6 | 11 |
+| djb2_64 | 0.95919 | 4.99959 | 5 | 6 | 11 |
+
+
+Markdown Table for Test: uniform_hashing_cc65536
+
+| hash_function | p_value | average | p50 | p75 | p99 |
+|:----------------|----------:|----------:|------:|------:|------:|
+| city64 | 0.382952 | 3.37794 | 3 | 5 | 8 |
+| city32 | 0.0719184 | 3.37794 | 3 | 5 | 8 |
+| xx64 | 0.724856 | 3.37794 | 3 | 5 | 8 |
+| xx32 | 0.474474 | 3.37794 | 3 | 5 | 8 |
+| spooky64 | 0.652061 | 3.37794 | 3 | 5 | 8 |
+| spooky32 | 0.652061 | 3.37794 | 3 | 5 | 8 |
+| murmur3 32 | 0.76984 | 3.37794 | 3 | 5 | 8 |
+| fnv1a64 | 0.980846 | 3.37794 | 3 | 5 | 8 |
+| fnv1a32 | 0.691112 | 3.37794 | 3 | 5 | 8 |
+| adler32 | 0 | 3.37794 | 0 | 0 | 149 |
+| djb2_32 | 0.218884 | 3.37794 | 3 | 5 | 8 |
+| djb2_64 | 0.218884 | 3.37794 | 3 | 5 | 8 |
+
+
+Markdown Table for Test: uniform_hashing_cc65537
+
+| hash_function | p_value | average | p50 | p75 | p99 |
+|:----------------|----------:|----------:|------:|------:|------:|
+| city64 | 0.622152 | 3.37789 | 3 | 5 | 8 |
+| city32 | 0.258935 | 3.37789 | 3 | 5 | 8 |
+| xx64 | 0.507267 | 3.37789 | 3 | 5 | 8 |
+| xx32 | 0.233247 | 3.37789 | 3 | 5 | 8 |
+| spooky64 | 0.054684 | 3.37789 | 3 | 5 | 8 |
+| spooky32 | 0.760929 | 3.37789 | 3 | 5 | 8 |
+| murmur3 32 | 0.377535 | 3.37789 | 3 | 5 | 8 |
+| fnv1a64 | 0.0843206 | 3.37789 | 3 | 5 | 8 |
+| fnv1a32 | 0.0470464 | 3.37789 | 3 | 5 | 8 |
+| adler32 | 0 | 3.37789 | 0 | 1 | 50 |
+| djb2_32 | 0.225337 | 3.37789 | 3 | 5 | 8 |
+| djb2_64 | 0.867138 | 3.37789 | 3 | 5 | 8 |
+
+# AMERICAN
+
+Markdown Table for Test: uniform_hashing_cc1024
+
+| hash_function | p_value | average | p50 | p75 | p99 |
+|:----------------|----------:|----------:|------:|------:|------:|
+| city64 | 0.736963 | 121.079 | 121 | 128 | 146 |
+| city32 | 0.98427 | 121.079 | 121 | 128 | 145 |
+| xx64 | 0.0866426 | 121.079 | 121 | 128 | 148 |
+| xx32 | 0.177389 | 121.079 | 121 | 128 | 148 |
+| spooky64 | 0.747902 | 121.079 | 121 | 128 | 149 |
+| spooky32 | 0.747902 | 121.079 | 121 | 128 | 149 |
+| murmur3 32 | 0.436342 | 121.079 | 121 | 128 | 149 |
+| fnv1a64 | 0.219386 | 121.079 | 121 | 128 | 148 |
+| fnv1a32 | 0.049487 | 121.079 | 121 | 129 | 148 |
+| adler32 | 0 | 121.079 | 97 | 151 | 313 |
+| djb2_32 | 0.673467 | 121.079 | 121 | 128 | 146 |
+| djb2_64 | 0.673467 | 121.079 | 121 | 128 | 146 |
+
+
+Markdown Table for Test: uniform_hashing_cc1031
+
+| hash_function | p_value | average | p50 | p75 | p99 |
+|:----------------|----------:|----------:|------:|------:|------:|
+| city64 | 0.629573 | 120.257 | 120 | 128 | 146 |
+| city32 | 0.134385 | 120.257 | 120 | 128 | 147 |
+| xx64 | 0.513289 | 120.257 | 120 | 127 | 148 |
+| xx32 | 0.519872 | 120.257 | 121 | 128 | 146 |
+| spooky64 | 0.742699 | 120.257 | 120 | 128 | 144 |
+| spooky32 | 0.85038 | 120.257 | 120 | 127 | 145 |
+| murmur3 32 | 0.815637 | 120.257 | 120 | 128 | 144 |
+| fnv1a64 | 0.117736 | 120.257 | 120 | 128 | 147 |
+| fnv1a32 | 0.376817 | 120.257 | 120 | 127 | 147 |
+| adler32 | 0.482008 | 120.257 | 121 | 128 | 147 |
+| djb2_32 | 0.30119 | 120.257 | 120 | 128 | 146 |
+| djb2_64 | 0.14504 | 120.257 | 120 | 128 | 147 |
+
+
+Markdown Table for Test: uniform_hashing_cc1048576
+
+| hash_function | p_value | average | p50 | p75 | p99 |
+|:----------------|----------:|----------:|------:|------:|------:|
+| city64 | 0.716405 | 0.118241 | 0 | 0 | 1 |
+| city32 | 0.0317389 | 0.118241 | 0 | 0 | 1 |
+| xx64 | 0.287473 | 0.118241 | 0 | 0 | 1 |
+| xx32 | 0.30769 | 0.118241 | 0 | 0 | 1 |
+| spooky64 | 0.169125 | 0.118241 | 0 | 0 | 1 |
+| spooky32 | 0.169125 | 0.118241 | 0 | 0 | 1 |
+| murmur3 32 | 0.241695 | 0.118241 | 0 | 0 | 1 |
+| fnv1a64 | 0.720349 | 0.118241 | 0 | 0 | 1 |
+| fnv1a32 | 0.662861 | 0.118241 | 0 | 0 | 1 |
+| adler32 | 0 | 0.118241 | 0 | 0 | 4 |
+| djb2_32 | 0.200196 | 0.118241 | 0 | 0 | 1 |
+| djb2_64 | 0.200196 | 0.118241 | 0 | 0 | 1 |
+
+
+Markdown Table for Test: uniform_hashing_cc1048583
+
+| hash_function | p_value | average | p50 | p75 | p99 |
+|:----------------|----------:|----------:|------:|------:|------:|
+| city64 | 0.601079 | 0.118241 | 0 | 0 | 1 |
+| city32 | 0.26772 | 0.118241 | 0 | 0 | 1 |
+| xx64 | 0.230728 | 0.118241 | 0 | 0 | 1 |
+| xx32 | 0.887733 | 0.118241 | 0 | 0 | 1 |
+| spooky64 | 0.532244 | 0.118241 | 0 | 0 | 1 |
+| spooky32 | 0.319907 | 0.118241 | 0 | 0 | 1 |
+| murmur3 32 | 0.858645 | 0.118241 | 0 | 0 | 1 |
+| fnv1a64 | 0.914122 | 0.118241 | 0 | 0 | 1 |
+| fnv1a32 | 0.645416 | 0.118241 | 0 | 0 | 1 |
+| adler32 | 0 | 0.118241 | 0 | 0 | 4 |
+| djb2_32 | 0.420976 | 0.118241 | 0 | 0 | 1 |
+| djb2_64 | 0.671147 | 0.118241 | 0 | 0 | 1 |
+
+
+Markdown Table for Test: uniform_hashing_cc177121
+
+| hash_function | p_value | average | p50 | p75 | p99 |
+|:----------------|----------:|----------:|------:|------:|------:|
+| city64 | 0.757385 | 0.700002 | 1 | 1 | 3 |
+| city32 | 0.664197 | 0.700002 | 1 | 1 | 3 |
+| xx64 | 0.383529 | 0.700002 | 1 | 1 | 3 |
+| xx32 | 0.0398676 | 0.700002 | 1 | 1 | 3 |
+| spooky64 | 0.0663541 | 0.700002 | 1 | 1 | 3 |
+| spooky32 | 0.206443 | 0.700002 | 1 | 1 | 3 |
+| murmur3 32 | 0.701829 | 0.700002 | 1 | 1 | 3 |
+| fnv1a64 | 0.0432672 | 0.700002 | 1 | 1 | 3 |
+| fnv1a32 | 0.510095 | 0.700002 | 1 | 1 | 3 |
+| adler32 | 0 | 0.700002 | 0 | 1 | 5 |
+| djb2_32 | 0.424391 | 0.700002 | 1 | 1 | 3 |
+| djb2_64 | 0.99198 | 0.700002 | 1 | 1 | 3 |
+
+
+Markdown Table for Test: uniform_hashing_cc177127
+
+| hash_function | p_value | average | p50 | p75 | p99 |
+|:----------------|----------:|----------:|------:|------:|------:|
+| city64 | 0.0120259 | 0.699978 | 1 | 1 | 3 |
+| city32 | 0.61301 | 0.699978 | 1 | 1 | 3 |
+| xx64 | 0.36992 | 0.699978 | 1 | 1 | 3 |
+| xx32 | 0.689268 | 0.699978 | 1 | 1 | 3 |
+| spooky64 | 0.826634 | 0.699978 | 1 | 1 | 3 |
+| spooky32 | 0.201728 | 0.699978 | 1 | 1 | 3 |
+| murmur3 32 | 0.241564 | 0.699978 | 1 | 1 | 3 |
+| fnv1a64 | 0.518766 | 0.699978 | 1 | 1 | 3 |
+| fnv1a32 | 0.269278 | 0.699978 | 1 | 1 | 3 |
+| adler32 | 0 | 0.699978 | 0 | 1 | 4 |
+| djb2_32 | 0.995999 | 0.699978 | 1 | 1 | 3 |
+| djb2_64 | 0.87148 | 0.699978 | 1 | 1 | 3 |
+
+
+Markdown Table for Test: uniform_hashing_cc24797
+
+| hash_function | p_value | average | p50 | p75 | p99 |
+|:----------------|-----------:|----------:|------:|------:|------:|
+| city64 | 0.342133 | 5 | 5 | 6 | 11 |
+| city32 | 0.136737 | 5 | 5 | 6 | 11 |
+| xx64 | 0.913448 | 5 | 5 | 6 | 11 |
+| xx32 | 0.168673 | 5 | 5 | 6 | 11 |
+| spooky64 | 0.0763224 | 5 | 5 | 6 | 11 |
+| spooky32 | 0.87128 | 5 | 5 | 6 | 11 |
+| murmur3 32 | 0.00554774 | 5 | 5 | 6 | 11 |
+| fnv1a64 | 0.120278 | 5 | 5 | 6 | 11 |
+| fnv1a32 | 0.211224 | 5 | 5 | 6 | 11 |
+| adler32 | 0 | 5 | 5 | 7 | 12 |
+| djb2_32 | 0.671138 | 5 | 5 | 6 | 11 |
+| djb2_64 | 0.198534 | 5 | 5 | 6 | 11 |
+
+
+Markdown Table for Test: uniform_hashing_cc24799
+
+| hash_function | p_value | average | p50 | p75 | p99 |
+|:----------------|----------:|----------:|------:|------:|------:|
+| city64 | 0.320044 | 4.9996 | 5 | 6 | 11 |
+| city32 | 0.950028 | 4.9996 | 5 | 6 | 11 |
+| xx64 | 0.985074 | 4.9996 | 5 | 6 | 11 |
+| xx32 | 0.638649 | 4.9996 | 5 | 6 | 11 |
+| spooky64 | 0.938653 | 4.9996 | 5 | 6 | 11 |
+| spooky32 | 0.324541 | 4.9996 | 5 | 6 | 11 |
+| murmur3 32 | 0.827089 | 4.9996 | 5 | 6 | 11 |
+| fnv1a64 | 0.132858 | 4.9996 | 5 | 6 | 11 |
+| fnv1a32 | 0.677634 | 4.9996 | 5 | 6 | 11 |
+| adler32 | 0 | 4.9996 | 5 | 7 | 13 |
+| djb2_32 | 0.335571 | 4.9996 | 5 | 6 | 11 |
+| djb2_64 | 0.855059 | 4.9996 | 5 | 6 | 11 |
+
+
+Markdown Table for Test: uniform_hashing_cc6199
+
+| hash_function | p_value | average | p50 | p75 | p99 |
+|:----------------|-----------:|----------:|------:|------:|------:|
+| city64 | 0.0318986 | 20.0008 | 20 | 23 | 31 |
+| city32 | 0.485435 | 20.0008 | 20 | 23 | 31 |
+| xx64 | 0.100485 | 20.0008 | 20 | 23 | 31 |
+| xx32 | 0.994146 | 20.0008 | 20 | 23 | 31 |
+| spooky64 | 0.457942 | 20.0008 | 20 | 23 | 31 |
+| spooky32 | 0.690611 | 20.0008 | 20 | 23 | 31 |
+| murmur3 32 | 0.872433 | 20.0008 | 20 | 23 | 31 |
+| fnv1a64 | 0.569355 | 20.0008 | 20 | 23 | 31 |
+| fnv1a32 | 0.868203 | 20.0008 | 20 | 23 | 31 |
+| adler32 | 0.00760926 | 20.0008 | 20 | 23 | 31 |
+| djb2_32 | 0.362439 | 20.0008 | 20 | 23 | 31 |
+| djb2_64 | 0.423641 | 20.0008 | 20 | 23 | 31 |
+
+
+Markdown Table for Test: uniform_hashing_cc6203
+
+| hash_function | p_value | average | p50 | p75 | p99 |
+|:----------------|----------:|----------:|------:|------:|------:|
+| city64 | 0.806491 | 19.9879 | 20 | 23 | 31 |
+| city32 | 0.460943 | 19.9879 | 20 | 23 | 31 |
+| xx64 | 0.535028 | 19.9879 | 20 | 23 | 31 |
+| xx32 | 0.0361965 | 19.9879 | 20 | 23 | 31 |
+| spooky64 | 0.625626 | 19.9879 | 20 | 23 | 31 |
+| spooky32 | 0.789106 | 19.9879 | 20 | 23 | 31 |
+| murmur3 32 | 0.376738 | 19.9879 | 20 | 23 | 31 |
+| fnv1a64 | 0.44424 | 19.9879 | 20 | 23 | 31 |
+| fnv1a32 | 0.845589 | 19.9879 | 20 | 23 | 31 |
+| adler32 | 0 | 19.9879 | 19 | 25 | 38 |
+| djb2_32 | 0.285359 | 19.9879 | 20 | 23 | 31 |
+| djb2_64 | 0.835886 | 19.9879 | 20 | 23 | 31 |
+
+
+Markdown Table for Test: uniform_hashing_cc65536
+
+| hash_function | p_value | average | p50 | p75 | p99 |
+|:----------------|----------:|----------:|------:|------:|------:|
+| city64 | 0.697148 | 1.89186 | 2 | 3 | 6 |
+| city32 | 0.970348 | 1.89186 | 2 | 3 | 6 |
+| xx64 | 0.153574 | 1.89186 | 2 | 3 | 6 |
+| xx32 | 0.0501847 | 1.89186 | 2 | 3 | 6 |
+| spooky64 | 0.625618 | 1.89186 | 2 | 3 | 6 |
+| spooky32 | 0.625618 | 1.89186 | 2 | 3 | 6 |
+| murmur3 32 | 0.781338 | 1.89186 | 2 | 3 | 6 |
+| fnv1a64 | 0.290318 | 1.89186 | 2 | 3 | 6 |
+| fnv1a32 | 0.293319 | 1.89186 | 2 | 3 | 6 |
+| adler32 | 0 | 1.89186 | 0 | 0 | 76 |
+| djb2_32 | 0.389238 | 1.89186 | 2 | 3 | 6 |
+| djb2_64 | 0.389238 | 1.89186 | 2 | 3 | 6 |
+
+
+Markdown Table for Test: uniform_hashing_cc65537
+
+| hash_function | p_value | average | p50 | p75 | p99 |
+|:----------------|----------:|----------:|------:|------:|------:|
+| city64 | 0.899992 | 1.89183 | 2 | 3 | 6 |
+| city32 | 0.80894 | 1.89183 | 2 | 3 | 6 |
+| xx64 | 0.106118 | 1.89183 | 2 | 3 | 6 |
+| xx32 | 0.486984 | 1.89183 | 2 | 3 | 6 |
+| spooky64 | 0.509115 | 1.89183 | 2 | 3 | 6 |
+| spooky32 | 0.878417 | 1.89183 | 2 | 3 | 6 |
+| murmur3 32 | 0.986041 | 1.89183 | 2 | 3 | 6 |
+| fnv1a64 | 0.0671572 | 1.89183 | 2 | 3 | 6 |
+| fnv1a32 | 0.65536 | 1.89183 | 2 | 3 | 6 |
+| adler32 | 0 | 1.89183 | 0 | 0 | 40 |
+| djb2_32 | 0.523084 | 1.89183 | 2 | 3 | 6 |
+| djb2_64 | 0.019556 | 1.89183 | 2 | 3 | 6 |
+
+
diff --git a/more_results/wordlist_collisions.md b/more_results/wordlist_collisions.md
new file mode 100644
index 0000000..0a4c85f
--- /dev/null
+++ b/more_results/wordlist_collisions.md
@@ -0,0 +1,50 @@
+### AMERICAN
+
+| Hash Function | Collisions | Collision Percentage |
+|---------------|------------|----------------------|
+| city64 | 0 | 0 |
+| city32 | 3 | 0.00241965 |
+| xx64 | 0 | 0 |
+| xx32 | 2 | 0.0016131 |
+| spooky64 | 0 | 0 |
+| spooky32 | 4 | 0.0032262 |
+| murmur3 32 | 1 | 0.00080655 |
+| fnv1a64 | 0 | 0 |
+| fnv1a32 | 3 | 0.00241965 |
+| adler32 | 29937 | 24.1457 |
+| djb2 32 | 90 | 0.0725894 |
+| djb2 64 | 90 | 0.0725894 |
+
+### FRENCH
+
+| Hash Function | Collisions | Collision Percentage |
+|---------------|------------|----------------------|
+| city64 | 0 | 0 |
+| city32 | 6 | 0.00271031 |
+| xx64 | 0 | 0 |
+| xx32 | 10 | 0.00451718 |
+| spooky64 | 0 | 0 |
+| spooky32 | 15 | 0.00677577 |
+| murmur3 32 | 6 | 0.00271031 |
+| fnv1a64 | 0 | 0 |
+| fnv1a32 | 4 | 0.00180687 |
+| adler32 | 47469 | 21.4426 |
+| djb2 32 | 16 | 0.00722749 |
+| djb2 64 | 9 | 0.00406546 |
+
+### GERMAN
+
+| Hash Function | Collisions | Collision Percentage |
+|---------------|------------|----------------------|
+| city64 | 0 | 0 |
+| city32 | 11 | 0.00360968 |
+| xx64 | 0 | 0 |
+| xx32 | 10 | 0.00328153 |
+| spooky64 | 0 | 0 |
+| spooky32 | 10 | 0.00328153 |
+| murmur3 32 | 15 | 0.00492229 |
+| fnv1a64 | 0 | 0 |
+| fnv1a32 | 18 | 0.00590675 |
+| adler32 | 68006 | 22.3164 |
+| djb2 32 | 17 | 0.0055786 |
+| djb2 64 | 2 | 0.00065631 |