﻿id summary reporter owner description type status priority milestone component version resolution keywords cc os architecture failure difficulty testcase blockedby blocking related 5280 System.Random commits (rand `mod` base) error. rrnewton rrnewton "You have probably at some point come across the C code ""{{{rand() % base}}}""'. It is very intuitive, but unfortunately creates non-uniform random numbers, which is easy to see if you imagine {{{rand()}}} producing numbers in say `[0,15)` and base being `10`. In the function `System.Random.randomIvalInteger` you can see the same thing happening. The only way I know how to deal with it and generate uniform integers within a range is to artificially restrict the range of the source of randomness to be a multiple of the desired base. It can be done simply by throwing out some random results. This strategy appears to be used by GMP's mpz_urandomm function: http://gmplib.org/manual/Integer-Random-Numbers.html#Integer-Random-Numbers The file `urandomm.c` has the code. " bug new normal ⊥ libraries/random 7.0.3 random mod base Unknown/Multiple Unknown/Multiple Incorrect result at runtime