summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2005-01-04 14:28:24 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2005-01-04 14:28:24 +0000
commitc9327ba1959d1b8758f776a91c32199bf9dbe174 (patch)
tree4fb93e521ddaadb1e8c2440b46dceda9dc16fb46
parenta5392617ab6acb96a58cd00ba9b4ee818f6975c7 (diff)
downloadruby-c9327ba1959d1b8758f776a91c32199bf9dbe174.tar.gz
ruby-c9327ba1959d1b8758f776a91c32199bf9dbe174.tar.xz
ruby-c9327ba1959d1b8758f776a91c32199bf9dbe174.zip
* 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: http://svn.ruby-lang.org/repos/ruby/branches/ruby_1_8@7719 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog10
-rw-r--r--bignum.c5
2 files changed, 14 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 633384cb5..28fe6899d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+Tue Jan 4 23:25:29 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * bignum.c (rb_big_rand): should return positive random number.
+ [ruby-dev:25401]
+
+Tue Jan 4 11:15:29 2005 TAMURA Takashi <sheepman@tcn.zaq.ne.jp>
+
+ * 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 <akr@m17n.org>
* random.c (random_seed): don't use /dev/urandom if it is not
diff --git a/bignum.c b/bignum.c
index aba88df04..d823d9c49 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;
}
/*