From 31f91eab5cb8e66f0207fcce6afe75b93057834a Mon Sep 17 00:00:00 2001 From: matz Date: Tue, 4 Jan 2005 14:28:24 +0000 Subject: [PATCH] * bignum.c (rb_big_rand): should return positive random number. [ruby-dev:25401] * bignum.c (rb_big_rand): do not use rb_big_modulo to generate random bignums. [ruby-dev:25396] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@7719 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 10 ++++++++++ bignum.c | 5 ++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 633384cb55..28fe6899d3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +Tue Jan 4 23:25:29 2005 Yukihiro Matsumoto + + * bignum.c (rb_big_rand): should return positive random number. + [ruby-dev:25401] + +Tue Jan 4 11:15:29 2005 TAMURA Takashi + + * bignum.c (rb_big_rand): do not use rb_big_modulo to generate + random bignums. [ruby-dev:25396] + Mon Jan 3 14:01:54 2005 Tanaka Akira * random.c (random_seed): don't use /dev/urandom if it is not diff --git a/bignum.c b/bignum.c index aba88df04d..d823d9c49a 100644 --- a/bignum.c +++ b/bignum.c @@ -2010,11 +2010,14 @@ rb_big_rand(max, rand_buf) return rb_float_new(rand_buf[0]); } v = bignew(len,1); + RBIGNUM(v)->sign = RBIGNUM(max)->sign; + len--; + BDIGITS(v)[len] = BDIGITS(max)[len] * rand_buf[len]; while (len--) { BDIGITS(v)[len] = ((BDIGIT)~0) * rand_buf[len]; } - return rb_big_modulo((VALUE)v, max); + return v; } /*