id,summary,reporter,owner,description,type,status,milestone,component,version,severity,resolution,keywords,cc 7020,uniform_01 improvement,agribov_no_s_p_a_m@…,No-Maintainer,"The current code to simulate uniform random number in interval [0;1] contains verification to skip 1. if (result < result_type(1)) return result; It means that random generator can generate 0 but not 1. This is used in some other code, for example, generate Exponential random number: return -result_type(1) / _lambda * log(result_type(1)-uniform_01()(eng)); Meaning (1 - random number) will never be 0. If eng() returns integer number, then, with some limitations for result_type and generated range of random numbers (result_type has to be double for generated 32 bit random numbers): result_type factor = result_type(1) / (result_type((eng.max)()-(eng.min)()) + result_type(1)); return (result_type(eng() - (eng.min)()) + result_type(0.5)) * factor; In this case, the result will never contain 0 or 1 and will be unbiased. No more checking for 0 or 1 is necessary. ",Bugs,closed,To Be Determined,random,Boost 1.49.0,Optimization,invalid,uniform_01,