[swift-users] arc4random_uniform on Linux is missing from Foundation??
Edward Connell
ewconnell at gmail.com
Mon May 22 10:44:18 CDT 2017
Any ideas when Foundation on Linux will support arc4random_uniform? This is
kind of an important function.
There doesn't seem to be any decent substitute without requiring the
installation of libbsd-dev, which turns out to be messy. Currently I am
doing this, but glibc random with mod does not produce good quality
numbers, due to modulo bias.
Has anyone come up with a better solution to get a true uniform
distribution that isn't super messy?
import Foundation
#if os(Linux)
import Glibc
#endif
public func random_uniform(range: Int) -> Int {
guard range > 0 else { return 0 }
#if os(Linux)
return Int(random()) % range
#else
return Int(arc4random_uniform(UInt32(range)))
#endif
}
Thanks, Ed
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-users/attachments/20170522/ae230151/attachment.html>
More information about the swift-users
mailing list