oc 中随机数的用法(arc4random() 、random()、CCRANDOM_0_1()
oc 中隨機數的用法(arc4random() 、random()、CCRANDOM_0_1()
1)、arc4random() 比較精確不需要生成隨即種子
?????? 使用方法 :
???????????????? 通過arc4random() 獲取0到x-1之間的整數的代碼如下:
???????????????? int?value?=?arc4random()?%?x;?
???????????????? 獲取1到x之間的整數的代碼如下:
??????????????? ?int?value?=?(arc4random()?%?x)?+?1;?
?
?????? 2)、CCRANDOM_0_1() cocos2d中使用 ,范圍是[0,1]
?????? 使用方法:
???????????????? float random = CCRANDOM_0_1() * 5; //[0,5]?? CCRANDOM_0_1() 取值范圍是[0,1]
?
?????? 3)、random() 需要初始化時設置種子
????? 使用方法:
??????????????? srandom((unsigned int)time(time_t *)NULL); //初始化時,設置下種子就好了。
rand()實際并不是一個真正的偽隨機數發生器,random()會相對好點,但也不算理想。幸運的是iPhone上還有其他的選擇。個人來說我首選arc4random() ,原因就是它是一個真正的偽隨機算法,而且范圍是rand()的兩倍。
?
-(float)randomFloatBetween:(float)num1 andLargerFloat:(float)num2
{
? ? int startVal = num1*10000;
? ? int endVal = num2*10000;?
?
? ? int randomValue = startVal +(arc4random()%(endVal - startVal));
? ? float a = randomValue;
?
? ? return(a /10000.0);
}
?在一些產品的源代碼中,經常會發現有這樣的語句,
srand(unsigned(time(NULL)));
為什么要這樣做呢,其實很簡單。
1.? time()函數表示返回1970-1-1 00:00:00 到當前時間的秒數,而time(NULL)表示獲取一個時間,準確的說,獲取一個指針的地址。
2.? srand()函數是產生隨機數種子的。在產生隨機數 rand()被調用的時候,他會查看:如果用戶之前調用過 srand(seed)的話,他會重新調用一遍 srand(seed)以產生隨機數種子;如果發現沒有調用過 srand(seed)的話,會自動調用 srand(1)一次。所以,如果希望rand()每次調用產生的值都不一樣,就需要每次調用srand(seed)一次,而且seed不能相同。
綜合上述兩點,那就很明了了。
srand(unsigned(time(NULL)))表示產生隨機數種子以保證rand()調用的時候不會出現重復的隨機值
轉載于:https://www.cnblogs.com/chenhaosuibi/p/3456554.html
總結
以上是生活随笔為你收集整理的oc 中随机数的用法(arc4random() 、random()、CCRANDOM_0_1()的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: POJ 2853 Sequence Su
- 下一篇: sql按相似度模糊查询实例