我是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
仍会显示在屏幕外。任何建议都将不胜感激。
答案 0 :(得分:0)
我不确定你希望产生什么数字,但你得到的结果如下:
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元素的中心。除非它非常大,否则很可能是屏幕外的。
答案 1 :(得分:0)
这种划分可能不是你想要的:
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))
您的问题是您将最大值添加到随机值中,所以当然它总是在屏幕外。