SwiftGFX / SwiftMath

Cross-platform math library with SIMD support
BSD 2-Clause "Simplified" License
63 stars 14 forks source link

RNG parameter intuitiveness #2

Open zmeyc opened 6 years ago

zmeyc commented 6 years ago

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?

s1ddok commented 6 years ago

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.