遠藤です。

長岡科学技術大のftpミラーにすでにRuby 1.3.3-990513があって、
ゲットしてきました。ありがとうございます。今までiijを使って
いたのですが、ミラーが遅いようで。

正規表現のquantifierの{0,2}の0がマッチしない件ですが、
--- regex.c.orig        Fri May 14 08:49:36 1999
+++ regex.c     Fri May 14 08:50:27 1999
@@ -2681,5 +2681,5 @@
        EXTRACT_NUMBER(k, p + 2);
        /* Increment p past the n for when k != 0.  */
-       if (k == 0) {
+       if (k != 0) {
          p += 4;
        }
でうまくいくようです。

MLを検索していて、nonzero?というのを見つけましたが、
nilを返していました。
--- numeric.c.orig      Fri May 14 08:49:47 1999
+++ numeric.c   Fri May 14 08:54:29 1999
@@ -168,5 +168,5 @@
 {
     if (RTEST(rb_funcall(num, rb_intern("zero?"), 0, 0))) {
-       return Qnil;
+       return Qfalse;
     }
     return num;

さて、randomについての提案なのですが、
--- random.c.orig       Fri May 14 08:59:06 1999
+++ random.c    Fri May 14 08:59:53 1999
@@ -70,5 +70,5 @@
 
 /* 0 <= RANDOM_NUMBER <= 1 */
-#define RANDOM_NUMBER (((double)RANDOM())/(double)RANDOM_MAX)
+#define RANDOM_NUMBER (((double)RANDOM())/((double)RANDOM_MAX + 1))
 
 #endif /* not HAVE_DRAND48 */
にしていただけないでしょうか??
と、diffをとってみて、drand48というのがあることに初めて
気がつきましたが、drand48の方は[0.0,1.0)になってました。
どうりでrandom(10)をいくら繰り返させても10が出て来なかった
わけです。
-- 
Akira Endo, akendo / t3.rim.or.jp