Я использую SecRandomCopyBytes
для генерации безопасного случайного числа.Генерировать случайное число в диапазоне с помощью SecRandomCopyBytes
Есть ли способ указать «диапазон»?
Мне нужно, чтобы получить такое же поведение этого Java
кусок кода:
SecureRandom r = new SecureRandom();
char x = (char)(r.nextInt(26) + 'a');
Любые советы будут ценить!
UPDATE
Видя, что я сделал глупый вопрос, я чувствую себя вынужденным делить решение, заточенный простирающийся тип Int:
public extension Int {
/**
Create a random num Int in range
:param: lower number Int
:param: upper number Int
:return: random number Int
*/
public static func random(#min: Int, max: Int) -> Int {
return Int(arc4random_uniform(UInt32(max - min + 1))) + min
}
/**
Create a secure random num Int in range
:param: lower number Int
:param: upper number Int
:return: random number Int
*/
public static func secureRandom(#min: Int, max: Int) -> Int {
if max == 0 {
NSException(name: "secureRandom", reason: "max number must be > 0", userInfo: nil).raise()
}
var randomBytes = UnsafeMutablePointer<UInt8>.alloc(8)
SecRandomCopyBytes(kSecRandomDefault, 8, randomBytes)
let randomNumber = unsafeBitCast(randomBytes, UInt.self)
return Int(randomNumber) % max + min
}
}
Ой .. Я просто понял, что я сделал глупый вопрос в истории! –
haha no worries: D иногда инстинкт, давайте зададим вопрос, прежде чем продумать это;) – nburk
Это также происходит после частых перекодировки кода! Убей меня! –