randomfromrange 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/randomfromrange.rb +8 -4
- metadata +1 -1
data/lib/randomfromrange.rb
CHANGED
@@ -5,10 +5,14 @@ Kernel.class_eval do
|
|
5
5
|
if(v.respond_to? :to_i)
|
6
6
|
return old_rand(v.to_i.abs)
|
7
7
|
elsif(v.respond_to? :begin and v.respond_to? :end)
|
8
|
-
|
9
|
-
|
10
|
-
precision = [
|
11
|
-
|
8
|
+
first = nil
|
9
|
+
v.step(1) { |n| first = n }
|
10
|
+
precision = ((first.to_s =~ /^[0-9]+\.([0-9]+)$/) ? $1.to_s : '').length
|
11
|
+
if precision > 0
|
12
|
+
return (('%.' + precision.to_s + 'f') % ((v.end-v.begin)*old_rand() + v.begin)).to_f
|
13
|
+
else
|
14
|
+
return ((v.end-v.begin)*old_rand() + v.begin).round
|
15
|
+
end
|
12
16
|
else
|
13
17
|
raise TypeError, 'can\'t convert ' + v.class + ' into Integer'
|
14
18
|
end
|