[前][次][番号順一覧][スレッド一覧]

ruby-changes:12613

From: mame <ko1@a...>
Date: Thu, 30 Jul 2009 21:55:36 +0900 (JST)
Subject: [ruby-changes:12613] Ruby:r24325 (trunk): * random.c (init_genrand): ensure invariant of mt->next and mt->left.

mame	2009-07-30 21:55:04 +0900 (Thu, 30 Jul 2009)

  New Revision: 24325

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=24325

  Log:
    * random.c (init_genrand): ensure invariant of mt->next and mt->left.
      mt->next should always equal mt->state + N + 1 - mt->left.
      In fact, 'r = Random.new(0); r == r.dup' has returned false.

  Modified files:
    trunk/ChangeLog
    trunk/random.c

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 24324)
+++ ChangeLog	(revision 24325)
@@ -1,3 +1,9 @@
+Thu Jul 30 21:48:56 2009  Yusuke Endoh  <mame@t...>
+
+	* random.c (init_genrand): ensure invariant of mt->next and mt->left.
+	  mt->next should always equal mt->state + N + 1 - mt->left.
+	  In fact, 'r = Random.new(0); r == r.dup' has returned false.
+
 Thu Jul 30 21:43:41 2009  Yusuke Endoh  <mame@t...>
 
 	* random.c (random_bytes): use NUM2LONG instead of FIX2LONG because
Index: random.c
===================================================================
--- random.c	(revision 24324)
+++ random.c	(revision 24325)
@@ -98,7 +98,7 @@
         mt->state[j] &= 0xffffffff;  /* for >32 bit machines */
     }
     mt->left = 1;
-    mt->next = mt->state + N - 1;
+    mt->next = mt->state + N;
 }
 
 /* initialize by an array with array-length */

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]