heh
Diffstat (limited to 'src/main.rs')
| -rw-r--r-- | src/main.rs | 13 |
1 files changed, 1 insertions, 12 deletions
diff --git a/src/main.rs b/src/main.rs index a320762..cd815fb 100644 --- a/src/main.rs +++ b/src/main.rs @@ -86,22 +86,11 @@ impl UnionFind { } } -/// WYRAND -unsafe fn rng() -> u64 { - static mut STATE: u64 = 0; - STATE = STATE.wrapping_add(0x60bee2bee120fc15); - let tmp = (STATE as u128).wrapping_mul(0xa3b195354a39b70d); - let m1 = (tmp >> 64) ^ tmp; - let tmp = m1.wrapping_mul(0x1b03738712fad5c9); - let m2 = ((tmp >> 64) ^ tmp) as u64; - return m2; -} - pub fn karg(graph: &Graph) -> Option<usize> { let mut v = graph.v; let mut s = UnionFind::new(v); while v > 2 { - let i = ((unsafe { rng() as u128 }.wrapping_mul(graph.edges.len() as u128)) >> 64) as u64; + let i = rand::limit::u64(graph.edges.len() as u64); let α = s.find(graph.edges[i.nat()].0); let β = s.find(graph.edges[i.nat()].1); if α == β { |