mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* 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
This commit is contained in:
parent
cdde8c23de
commit
ced9ad5ab5
3 changed files with 6 additions and 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
|
||||
|
|
6
random.c
6
random.c
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue