[lkml]   [2019]   [Mar]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
SubjectRe: [RFC PATCH] random: add get_random_max() function
I generally use a slightly simpler algorithm in various different projects:

//[0, bound)
static unsigned long random_bounded(unsigned long bound)
unsigned long ret;
const unsigned long max_mod_bound = (1 + ~bound) % bound;

if (bound < 2)
return 0;
ret = random_integer();
while (ret < max_mod_bound);
return ret % bound;

//[min, max_plus_one)
static unsigned long random_range(unsigned long min, unsigned long max_plus_one)
return random_bounded(max_plus_one - min) + min;

Is the motivation behind using Lemire that you avoid the division (via
the modulo) in favor of a multiplication?

 \ /
  Last update: 2019-03-24 21:49    [W:0.025 / U:21.468 seconds]
©2003-2018 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site