mirror of
https://github.com/ruby/ruby.git
synced 2025-08-15 13:39:04 +02:00
bignum.c (bary_sparse_p): do not comsume Random::DEFAULT
It uses random to determine if the bignum is sparse or not. It is arguable if three-digit samples are enough or not to determine it, but anyway, consuming Random source implicitly is not good. I introduced the random sampling mechanism, and I don't know any significant reason to do so. So, let's remove it. This change makes the sampling points fixed: 40th, 50th, and 60th percentiles.
This commit is contained in:
parent
8a39e6d653
commit
eb21e8add3
1 changed files with 3 additions and 3 deletions
6
bignum.c
6
bignum.c
|
@ -2359,9 +2359,9 @@ bary_sparse_p(const BDIGIT *ds, size_t n)
|
|||
{
|
||||
long c = 0;
|
||||
|
||||
if ( ds[rb_genrand_ulong_limited(n / 2) + n / 4]) c++;
|
||||
if (c <= 1 && ds[rb_genrand_ulong_limited(n / 2) + n / 4]) c++;
|
||||
if (c <= 1 && ds[rb_genrand_ulong_limited(n / 2) + n / 4]) c++;
|
||||
if ( ds[2 * n / 5]) c++;
|
||||
if (c <= 1 && ds[ n / 2]) c++;
|
||||
if (c <= 1 && ds[3 * n / 5]) c++;
|
||||
|
||||
return (c <= 1) ? 1 : 0;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue