/************************************************ random.c - $Author$ $Date$ created at: Fri Dec 24 16:39:21 JST 1993 Copyright (C) 1993-1996 Yukihiro Matsumoto ************************************************/ #include "ruby.h" static int first = 1; static char state[256]; static VALUE f_srand(argc, argv, obj) int argc; VALUE *argv; VALUE obj; { int seed, old; static int saved_seed; if (rb_scan_args(argc, argv, "01", &seed) == 0) { seed = time(0); } else { seed = NUM2INT(seed); } #ifdef HAVE_RANDOM if (first == 1) { initstate(1, state, sizeof state); first = 0; } else { setstate(state); } srandom(seed); old = saved_seed; saved_seed = seed; return int2inum(old); #else srand(seed); old = saved_seed; saved_seed = seed; return int2inum(old); #endif } static VALUE f_rand(obj, vmax) VALUE obj, vmax; { int val, max; #ifdef HAVE_RANDOM if (first == 1) { initstate(1, state, sizeof state); first = 0; } #endif switch (TYPE(vmax)) { case T_BIGNUM: return big_rand(vmax); case T_FLOAT: if (RFLOAT(vmax)->value > LONG_MAX || RFLOAT(vmax)->value < LONG_MIN) return big_rand(dbl2big(RFLOAT(vmax)->value)); break; } max = NUM2INT(vmax); if (max == 0) ArgError("rand(0)"); #ifdef HAVE_RANDOM val = random() % max; #else val = rand() % max; #endif if (val < 0) val = -val; return int2inum(val); } void Init_Random() { extern VALUE mKernel; rb_define_global_function("srand", f_srand, -1); rb_define_global_function("rand", f_rand, 1); } ion> The Ruby Programming Language
summaryrefslogtreecommitdiff
path: root/README.EXT
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2006-09-13 09:49:58 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2006-09-13 09:49:58 +0000
commit956ddced23449ee2c285a892fef89189d9b8476d (patch)
tree6ce358f771ba6ea575982b0d0ce189063d62b301 /README.EXT
parent1990397c5cf15c9f8fb84cc20acc75a90dd583a5 (diff)
* README.EXT: English adjustment. [ruby-core:08851] and
[ruby-core:08852] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@10921 b2dd03c8-39d4-4d8f-98ff-823fe69b080e