[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