2012-07-16 56 views
2

我目前有一種方法試圖獲得我提供的兩個數字之間的隨機數字,但它無法正常工作。兩個數字之間的隨機漂浮?

例如,如果我在4.0作爲下浮球和4.5作爲較高漂浮飼料,我得到的結果是像0.8或1.2,有時是這兩個數字之間。所以這讓我相信這種方法並不好。下面是方法:

- (float)randomFloatBetween:(float)num1 andLargerFloat:(float)num2 { 
    return ((float)arc4random()/ARC4RANDOM_MAX) * num2-num1 + num1; 
} 

這是ARC4RANDOM_MAX

#define ARC4RANDOM_MAX 0x100000000 

總之,是什麼原因造成這一點,我怎麼能解決這個問題?

謝謝!

回答

7

你的代碼含義:

return (((float)arc4random()/ARC4RANDOM_MAX) * num2) - num1 + num1; 

你需要括號圍繞num2-num1

return ((float)arc4random()/ARC4RANDOM_MAX) * (num2-num1) + num1; 
+0

你可能想的ABS +最小值和最大值調用有太多... – 2012-07-16 21:40:10

+1

你能解釋更多通過你的意思? – 2012-07-17 02:44:16

相關問題