SwiftMath icon indicating copy to clipboard operation
SwiftMath copied to clipboard

RNG parameter intuitiveness

Open zmeyc opened this issue 7 years ago • 1 comments

It's a bit confusing that Int.random(0, 100) can return 100 as well, ranges usually exclude the second value. Lot more confusing that Int.random(range: 0..<1) returns 0...1. And inclusive range (...) is not supported at all.

(lldb) p Int.random(range: 0..<1)
(Int) $R24 = 0
(lldb) p Int.random(range: 0..<1)
(Int) $R25 = 1

Also Double.random() has a default of 0.0...100.0 while usually 0..<1 would be expected. Would you like me to submit a PR to adjust these?

zmeyc avatar Jan 13 '18 12:01 zmeyc

Well, while I agree with Int.random(0, 100) returning 0...99 may be conventional in a lot of frameworks (including C# ones etc) I would still would like to see it returning 0...100, because it seems more rational to me.

Int.random(range: 0..<1) returns 0...1

I would treat this as a library bug

Double.random() has a default of 0.0...100.0 while usually 0..<1 would be expected

Yes, this is also a bad pitfall.

s1ddok avatar Jan 15 '18 16:01 s1ddok