use arc4random to seed non-csprng, fleshes out random subsystem

This commit is contained in:
2024-08-22 03:37:29 +10:00
parent 394e340f09
commit cb2ffe78a4
6 changed files with 83 additions and 15 deletions

View File

@ -17,8 +17,12 @@ public class Arc4Random: RandomProvider {
arc4random()
}
public func next(in bound: Range<Int>) -> Int {
assert(bound.upperBound <= Self.max)
return bound.lowerBound + Int(arc4random_uniform(UInt32(bound.upperBound)))
public func next(in bound: Int) -> Int {
assert(bound <= Self.max)
return Int(arc4random_uniform(UInt32(bound)))
}
public func next(in range: Range<Int>) -> Int {
return range.lowerBound + next(in: range.upperBound - range.lowerBound)
}
}