集合上的map
函数将会做出非常不同的事情。它将映射函数应用于集合的每个元素,并根据结果返回一个新的集合。
你要找的是什么:
func map(minRange:Int, maxRange:Int, minDomain:Int, maxDomain:Int, value:Int) -> Int {
return minDomain + (maxDomain - minDomain) * (value - minRange)/(maxRange - minRange)
}
print(map(minRange: 0, maxRange: 1800000, minDomain: 0, maxDomain: 3000, value: 200000))
由于只有一点点更多的工作,你可以把它通用于所有的整数类型:
func map<T:IntegerArithmetic>(minRange:T, maxRange:T, minDomain:T, maxDomain:T, value:T) -> T {
return minDomain + (maxDomain - minDomain) * (value - minRange)/(maxRange - minRange)
}
另一种选择是利用Swift Range
类型使呼叫更加简洁:
func map<T:IntegerArithmetic>(range:Range<T>, domain:Range<T>, value:T) -> T {
return domain.lowerBound + (domain.upperBound - domain.lowerBound) * (value - range.lowerBound)/(range.upperBound - range.lowerBound)
}
map(range:0..<3000, domain:0..<180000, value: 1500)
http://stackoverflow.com/questions/24132399/how-does-one-make-random-number-between-range-for-arc4random - 统一 – Sahil
“在两个数字之间保留一个数字”是什么意思?你想生成一个随机数吗? –
你的问题还不清楚,但'map'上的文档可以在[这里]找到(https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Closures.html)。 – Caleb