File: RandomModInteger.md

package info (click to toggle)
error-prone-java 2.18.0-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 23,204 kB
  • sloc: java: 222,992; xml: 1,319; sh: 25; makefile: 7
file content (10 lines) | stat: -rw-r--r-- 444 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
`Random.nextInt() % n` has

*   a 1/n chance of being 0
*   a 1/2n chance of being each number from `1` to `n-1` inclusive
*   a 1/2n chance of being each number from `-1` to `-(n-1)` inclusive

Many users expect a uniformly distributed random integer between `0` and `n-1`
inclusive, but you must use random.nextInt(n) to get that behavior. If the
original behavior is truly desired, use `(random.nextBoolean() ? 1 : -1) *
random.nextInt(n)`.