I'm working with Swift in Ubuntu, and I am getting an error that arc4random is an unresolved identifier. More information on this known bug here. Basically, the function only exists in BSD distros. I've tried module mapping header files, apt-getting packages, and I get more and more errors, which is not worth pursuing since this one function is not used very often.
Are there any functions to get pseudo random numbers with an upper-bound parameter that is compatible with Swift in Linux?
Swift 4.2
https://developer.apple.com/documentation/swift/int/2995648-random
PS. It works in Linux.
I went with something like this for 4-digit random numbers:
Edit: Note that the call to
srandom(UInt32(time(nil)))
should be outside a function/loop, otherwise it will produce the same value over and over againIf generating a random number within a function, using
srandom(UInt32(time(nil)))
inside the function can produce the same random number every time.Instead, prepare the random seed at the top of your
main.swift
once, and then random should behave as expected throughout.Example:
Swift on Linux (Ubuntu in my case) will produce the same number every time if you put the
srandom
call inside mygetRandomNum
function.Note of Caution:
srandom
andrandom
do not create a "truly" random number, and can be a security concern when making mission-critical applications that would be a target of a hack. The only real solution in that case is to execute Linux's/dev/random
directly viaProcess()
, and using its result. But this is outside the scope of the question.You could try something like this?