From 2a434d3deeea6709cba32ecddcb1a6120c98f97a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20M=C3=BCller?= Date: Thu, 26 Jul 2018 01:36:38 +0200 Subject: [PATCH 1/2] Fix Random#rand(Range(Float, Float)) to return Float --- spec/std/random_spec.cr | 9 +++++++++ src/random.cr | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/spec/std/random_spec.cr b/spec/std/random_spec.cr index b7bc761002e6..cc1a4bfb50bd 100644 --- a/spec/std/random_spec.cr +++ b/spec/std/random_spec.cr @@ -91,12 +91,21 @@ describe "Random" do x = rand(1.8..3.2) x.should be >= 1.8 x.should be <= 3.2 + + rand(1.0_f32..1.0_f32).should eq(1.0_f32) + x = rand(1.8_f32..3.2_f32) + x.should be >= 1.8_f32 + x.should be <= 3.2_f32 end it "does with exclusive range of floats" do x = rand(1.8...3.3) x.should be >= 1.8 x.should be < 3.3 + + x = rand(1.8_f32...3.3_f32) + x.should be >= 1.8_f32 + x.should be < 3.3_f32 end it "raises on invalid range" do diff --git a/src/random.cr b/src/random.cr index 6a9989821d11..485ca4e0df04 100644 --- a/src/random.cr +++ b/src/random.cr @@ -278,7 +278,7 @@ module Random # ``` # Random.new.rand(6.2..21.768) # => 15.2989 # ``` - def rand(range : Range(Float, Float)) : Float64 + def rand(range : Range(Float, Float)) : Float span = range.end - range.begin if range.excludes_end? unless range.begin < range.end From 349afd38a13d76ff6d681f94ab49cf26b5f05609 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20M=C3=BCller?= Date: Thu, 26 Jul 2018 01:47:14 +0200 Subject: [PATCH 2/2] fixup! Fix Random#rand(Range(Float, Float)) to return Float --- src/random.cr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/random.cr b/src/random.cr index 485ca4e0df04..3a2902202e2f 100644 --- a/src/random.cr +++ b/src/random.cr @@ -273,7 +273,7 @@ module Random rand_range(range) end - # Returns a random `Float64` in the given *range*. + # Returns a random `Float` in the given *range*. # # ``` # Random.new.rand(6.2..21.768) # => 15.2989