[英]How to generate a Random Floating point Number in range, Swift
我對Swift還是相當陌生,之前只使用過Python和Pascal。 我想知道是否有人可以幫助生成范圍內的浮點數。 我知道這不可能直接完成。 這就是我創建的。 但是,它似乎不起作用。
func location() {
// let DivisionConstant = UInt32(1000)
let randomIntHeight = arc4random_uniform(1000000) + 12340000
let randomIntWidth = arc4random_uniform(1000000) + 7500000
XRandomFloat = Float(randomIntHeight / UInt32(10000))
YRandomFloat = Float(randomIntWidth / UInt32(10000))
randomXFloat = CGFloat(XRandomFloat)
randomYFloat = CGFloat(YRandomFloat)
self.Item.center = CGPointMake(randomXFloat, randomYFloat)
}
從外觀上看,當我運行它時,它沒有除以DivisionConstant
的值,因此我對此進行了注釋,並用原始值替換了它。 但是, self.Item
仍顯示在屏幕外。 任何建議將不勝感激。
我不確定您希望生成什么數字,但是得到的結果是:
1317.0, 764.0
1237.0, 795.0
1320.0, 814.0
1275.0, 794.0
1314.0, 758.0
1300.0, 758.0
1260.0, 809.0
1279.0, 768.0
1315.0, 838.0
1284.0, 763.0
1273.0, 828.0
1263.0, 770.0
1252.0, 776.0
1255.0, 848.0
1277.0, 847.0
1236.0, 847.0
1320.0, 772.0
1268.0, 759.0
然后,您將其用作UI元素的中心。 除非它很大,否則很可能在屏幕外。
這種划分可能不是您想要的:
XRandomFloat = Float(randomIntHeight / UInt32(10000))
這將執行整數除法(舍棄所有余數),然后將結果轉換為Float。 您可能的意思是:
XRandomFloat = Float(randomIntHeight) / Float(10000)
這是粒度約為1/10000的浮點數。
您的初始代碼:
let randomIntHeight = arc4random_uniform(1000000) + 12340000
會產生一個介於12340000和(12340000 + 1000000-1)之間的隨機數。 根據您的最終縮放比例,這意味着范圍為1234和1333。這對於您的最終目標來說似乎很奇怪。 我認為您的意思確實只是arc4random_uniform(12340000),但我可能會誤解您的目標。
鑒於您的評論,我認為您已經使這一過程變得過於復雜。 假設您想要積分(即非分數)點,以下內容應該在屏幕上為您提供一個隨機點,這幾乎總是您想要的:
let bounds = UIScreen.mainScreen().bounds
let x = arc4random_uniform(UInt32(bounds.width))
let y = arc4random_uniform(UInt32(bounds.height))
let randomPoint = CGPoint(x: CGFloat(x), y: CGFloat(y))
您的問題是,您要將最大值添加到隨機值中,因此當然總是會在屏幕外顯示。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.