random.c : treat ranges where r.begin > r.end the same way cruby does

This commit is contained in:
leviongit
2025-05-04 04:10:39 +02:00
parent 98906d5ac9
commit 7be940942c
2 changed files with 3 additions and 2 deletions
+2 -2
View File
@@ -146,7 +146,7 @@ static mrb_value
rand_range_int(mrb_state *mrb, rand_state *t, mrb_int begin,
mrb_int end, mrb_bool excl) {
mrb_int span = end - begin + (excl ? 0 : 1);
if (span == 0)
if (span <= 0)
return mrb_nil_value();
return mrb_int_value(mrb, (rand_i(t, span)) + begin);
@@ -158,7 +158,7 @@ rand_range_float(mrb_state *mrb, rand_state *t,
mrb_float begin, mrb_float end,
mrb_bool excl) {
mrb_float span = end - begin + (excl ? 0.0 : 1.0);
if (span == 0.0)
if (span <= 0.0)
return mrb_nil_value();
return mrb_float_value(mrb, rand_real(t) * span + begin);
+1
View File
@@ -147,4 +147,5 @@ assert("Kernel#rand()") do
assert_equal(rand(0.0...0), nil)
assert_equal(rand(0...0.0), nil)
assert_equal(rand(0.0...0.0), nil)
assert_equal(rand(1..0), nil)
end