437
449
rb_scan_args(argc, argv, "01", &vmax);
452
464
struct RBignum *limit = (struct RBignum *)vmax;
454
466
limit = (struct RBignum *)rb_big_clone(vmax);
457
469
limit = (struct RBignum *)rb_big_minus((VALUE)limit, INT2FIX(1));
458
470
if (FIXNUM_P((VALUE)limit)) {
459
471
if (FIX2LONG((VALUE)limit) == -1)
461
473
return LONG2NUM(limited_rand(FIX2LONG((VALUE)limit)));
463
475
return limited_big_rand(limit);