今天在iphone開發過程中,遇到乙個需要生成隨機數的問題。很快rand()和arc4random()都進入了考慮範圍,但選擇的時候感覺有點為難。之前的時候可能沒有思索就隨便挑乙個用了,不過這次良心發現不能太隨便了。rand() 和arc4random()到底應該如何取捨呢?調查了下,發現下文很好地解答了這個問題。
在iphone中有幾個內嵌的隨機數發生器,很多人的第一反應可能就是在呼叫如下函式後使用rand():
srandom(time(null));
但是……,rand()實際並不是乙個真正的偽隨機數發生器,random()會相對好點,但也不算理想。幸運的是iphone上還有其他的選擇。個人來說我首選arc4random() ,原因就是它是乙個真正的偽隨機演算法,而且範圍是rand()的兩倍。
在iphone中,rand_max是0x7fffffff (2147483647),而arc4random()返回的最大值則是 0x100000000 (4294967296),從而有更好的精度。此外,使用arc4random()還不需要生成隨機種子,因為第一次呼叫的時候就會自動生成。
通過arc4random() 獲取0到x-1之間的整數的**如下:
int
value
= arc4random
() % x;
獲取1到x之間的整數的**如下:
int
value
= (arc4random() % x) + 1;
其中,根據預算優先順序括號實際是不需要的,不過我還是對括號格外小心。
最後如果想生成乙個浮點數,可以在專案中定義如下巨集:
#define arc4random_max 0x100000000
然後就可以使用arc4random() 來獲取0到100之間浮點數了(精度是rand()的兩倍),**如下:
double
val=
floorf
(((double)arc4random() / arc4random_max) * 100.0f);
生成隨機數 js生成隨機數的方法
這幾天一直在研究前台div元素的隨機定位的問題,而這裡面涉及到了js生成隨機數的方法,就下功能研究了一翻,並整理了一些資料以防以後再用得到。在js中可以使用 math 對像來實現隨機數的生成,但是這個對像有幾個方法,先了解一下 1 js中的 ceil 方法 ceil 方法對數字進行四捨五入,向上取整...
隨機生成隨機數
現畫乙個command命令按鈕,進行貼上。private sub command1 click show me scale 0,0 18,8 me.auto redraw true me.draw mode 2 circle 3,4 3,vb red me.auto redraw false lin...
隨機數生成
原型 void srand unsigned seed 用法 srand和rand 配合使用產生偽隨機數序列。rand函式在產生隨機數前,需要系統提供的生成偽隨機數序列的種子,rand根據這個種子的值產生一系列隨機數。如果系統提供的種子沒有變化,每次呼叫rand函式生成的偽隨機數序列都是一樣的。sr...