Adhemerval Zanella
c622ac1b86
stdlib: Simplify arc4random_uniform
...
It uses the bitmask with rejection [1], which calculates a mask
being the lowest power of two bounding the request upper bound,
successively queries new random values, and rejects values
outside the requested range.
Performance-wise, there is no much gain in trying to conserve
bits since arc4random is wrapper on getrandom syscall. It should
be cheaper to just query a uint32_t value. The algorithm also
avoids modulo and divide operations, which might be costly
depending of the architecture.
[1] https://www.pcg-random.org/posts/bounded-rands.html
Reviewed-by: Yann Droneaud <ydroneaud@opteya.com >
2022-08-01 14:37:24 -03:00
..
2022-06-23 08:26:01 -07:00
2022-03-10 05:56:33 +05:30
2022-01-01 11:40:24 -08:00
2022-06-30 14:56:21 -03:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-08-01 14:37:24 -03:00
2022-07-27 08:58:27 -03:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-07-05 11:04:45 +02:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-07-27 08:58:27 -03:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-25 17:39:36 -07:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-07-22 11:58:27 -03:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-03-31 22:00:58 +05:30
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2021-09-03 22:06:44 +05:30
2022-06-22 11:12:33 -07:00
2022-01-01 11:40:24 -08:00
2022-07-22 11:58:27 -03:00
2022-07-22 11:58:27 -03:00
2022-07-29 09:19:00 -03:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-03-31 09:14:10 -03:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2021-09-03 22:06:44 +05:30
2022-01-01 11:40:24 -08:00
2022-03-31 09:13:14 -03:00
2022-01-01 11:40:24 -08:00
2021-09-03 22:06:44 +05:30
2022-01-24 11:00:23 +05:30
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2020-06-30 23:04:06 +00:00
2020-06-30 23:04:06 +00:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-07-22 11:58:27 -03:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00
2022-01-01 11:40:24 -08:00