2012-03-04 101 views
4

希望找到我怎麼會格式化調用arc4Random()使用數字範圍從-10到10arc4random()範圍包括底片

抑或arc4Random()只生成從0到X?如果是這種情況,我將需要操縱arc4Random()的結果,以便它可能是指定範圍內的結果?

+0

A [有用的參考](http://mikeash.com/pyblog/friday-qa-2011-03-18-random-numbers.html),用於在可可 – FluffulousChimp 2012-03-04 11:27:12

回答

6

arc4random返回一個u_int32_t,它是一個無符號類型。你需要把它轉換成一個有符號的類型然後減去。

我假設你想要一個-10到+10的數字(你希望有時會選擇-10和+10)。

如果您靶向的iOS 4.3或更高版本,或Mac OS X 10.7或更高版本,您應該使用arc4random_uniform功能:如果您靶向舊的OS

int myNumber = (int)arc4random_uniform(21) - 10; 

,你必須使用arc4random

int myNumber = (int)(arc4random() % 21) - 10; 
+0

隨機數什麼arc4random和arc4random_uniform之間的差? 21號代表什麼?數字10代表什麼? – Demasterpl 2012-03-04 05:35:44

+0

您可以通過輸入'man arc4random'來閱讀這些功能之間的區別。 21和10來自您在問題中指定的數字範圍。 – 2012-03-04 06:34:55

+0

具體來說,21是'upperBound - lowerBound + 1',而10是'-lowerBound'。或者,您正在添加'lowerBound'而不是減去'-lowerBound'。在這個問題中,'upperBound'是+10,'lowerBound'是-10。 – 2016-02-23 02:56:47