在Swift中,我使用arc4random生成介于0到568之间的数字。
不过,我需要它对此加以限制。例如,这个数字不能介于10到40之间。这些“限制”是如何增加的?
发布于 2014-06-15 13:28:28
继续努力直到条件满足为止:
func funnyRandom() -> UInt32 {
var ran: UInt32 = 0
do {
ran = arc4random_uniform(568)
} while (ran > 10 && ran < 40)
return ran;
}在目标C中,它与Swift中的方法相同:
- (int)funnyRandom {
int ran;
do {
ran = arc4random_uniform(568);
} while (ran > 10 && ran < 40);
return ran;
}发布于 2014-06-15 13:46:00
而不多次调用arc4random_uniform
func funnyRandom() -> UInt32 {
var ran: UInt32 = 0
//we have less values
ran = arc4random_uniform(568 - 40 + 10)
//skip the excluded range
if (ran > 10) {
ran += 40 - 10
}
}更笼统地说:
func funnyRandom(max: UInt32, excludeRange: Range<UInt32>) -> UInt32 {
var excludeRangeLength = excludeRange.endIndex - excludeRange.startIndex + 1
var random: UInt32 = arc4random_uniform(max - excludeRangeLength)
if (random >= excludeRange.startIndex) {
random += excludeRangeLength
}
return random
}
funnyRandom(568, excludeRange: 10...40)https://stackoverflow.com/questions/24229925
复制相似问题