diff options
author | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-11-20 11:05:38 +0000 |
---|---|---|
committer | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-11-20 11:05:38 +0000 |
commit | ced9ad5ab546d7ae478066a13116015033e2b485 (patch) | |
tree | b07d39b3def6e9841b92079c7861b57bee324a6a | |
parent | cdde8c23de076db8c89795bf8a1bb4308d72d9c1 (diff) |
* random.c (rand_init): Make it possible to specify arbitrary array
for init_genrand().
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43736 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | random.c | 6 | ||||
-rw-r--r-- | test/ruby/test_rand.rb | 2 |
3 files changed, 6 insertions, 7 deletions
@@ -1,3 +1,8 @@ +Wed Nov 20 19:45:22 2013 Tanaka Akira <akr@fsij.org> + + * random.c (rand_init): Make it possible to specify arbitrary array + for init_genrand(). + Wed Nov 20 17:34:13 2013 Koichi Sasada <ko1@atdot.net> * parse.y (rb_gc_mark_symbols): set global_symbols.minor_marked only @@ -377,18 +377,12 @@ rand_init(struct MT *mt, VALUE vseed) seed = rb_to_int(vseed); len = rb_absint_numwords(seed, 32, NULL); - if (MT_MAX_STATE < len) - len = MT_MAX_STATE; if (len > numberof(buf0)) buf = ALLOC_N(unsigned int, len); sign = rb_integer_pack(seed, buf, len, sizeof(uint32_t), 0, INTEGER_PACK_LSWORD_FIRST|INTEGER_PACK_NATIVE_BYTE_ORDER); if (sign < 0) sign = -sign; - if (sign != 2) { /* not overflow */ - while (0 < len && buf[len-1] == 0) - len--; - } if (len == 0) { buf[0] = 0; len = 1; diff --git a/test/ruby/test_rand.rb b/test/ruby/test_rand.rb index d6512383be..a98eaab13c 100644 --- a/test/ruby/test_rand.rb +++ b/test/ruby/test_rand.rb @@ -177,7 +177,7 @@ class TestRand < Test::Unit::TestCase end def test_big_seed - assert_random_int(%w(1143843490), 0x100000000, 2**1000000-1) + assert_random_int(%w(2757555016), 0x100000000, 2**1000000-1) end def test_random_gc |