If you’ve written cross-platform code between Apple and Linux, you may have run into the “missing arc4random” issue. Part of BSD, and therefore automatically distributed with Darwin, arc4random uses “the key stream generator employed by the arc4 cipher, which uses 8*8 8 bit S-Boxes”
On Linux, you can revert back to rand()/random()
using conditional compilation but that’s not a great solution for anyone looking for quality pseudo-randomness. Matt Gallagher has a lovely write-up about native Swift RNGs at Cocoa with Love, and links to his implementation over at the CwlUtils repository.
Jens Persson, on the swift-users list, offers this native Swift generator, a “stripped down version” of Xoroshiro128+ PRNG as well.
One Comment
Another option is that libbsd is available on Linux, and already packaged and Swift-PM ready as https://github.com/mdaxter/CBSD