Advertisement
Guest User

Untitled

a guest
Sep 19th, 2017
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.66 KB | None | 0 0
  1. property("longs are evenly-distributed") =
  2. forAll { (seed: Seed, b: Base) =>
  3. val base = b.value
  4.  
  5. def countZeros(s0: Seed, i: Int, seen0: Int): Int =
  6. if (i <= 0) seen0 else {
  7. val (x, s1) = s0.long
  8. val n = (x & 0x7fffffff).toInt % base
  9. val seen = if (n == 0) seen0 + 1 else seen0
  10. countZeros(s1, i - 1, seen)
  11. }
  12.  
  13. val count = 10000
  14. val mean = count.toDouble / base
  15. val stdDev = Math.sqrt(mean * ((base.toDouble - 1) / base))
  16. val delta = 5 * stdDev // 1 in 1.7M false positives
  17. val zeros = countZeros(seed, count, 0)
  18. (mean - delta) <= zeros && zeros <= (mean + delta)
  19. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement