iOS開發(fā)丨使用arc4random()生成真隨機數(shù)

ios 有三種隨機數(shù)方法:

//第一種
srand((unsigned)time(0)); //不加這句每次產(chǎn)生的隨機數(shù)不變
int i = rand() % 5;
 
//第二種
srandom(time(0));
int i = random() % 5;
 
//第三種
int i = arc4random() % 5 ;

其中rand()和random()并不是一個真正的偽隨機數(shù)發(fā)生器,在使用之前需要先初始化隨機種子,否則每次生成的隨機數(shù)一樣。

而arc4random() 是一個真正的偽隨機算法,不需要生成隨機種子,范圍是rand()的兩倍。前兩種隨機數(shù)方法中返回的最大值RAND_MAX是0x7fffffff (2147483647),而arc4random()返回的最大值則是 0x100000000 (4294967296)。

從精確度上來說,arc4random() > random() >= rand()。

下面介紹兩個常用的隨機數(shù)生成方法:

// 生成隨機整數(shù)
- (int)getRandomInt:(int)from to:(int)to {
    return (int)(from + (arc4random() % (to - from + 1)));
}

// 生成隨機浮點數(shù)
- (float)getRandomFloat:(float)from to:(float)to {
    float diff = to - from;
    return (((float) arc4random() / UINT_MAX) * diff) + from;
}

如生成1~100的隨機數(shù),只需要調(diào)用
int a = [self getRandomInt:1 to:100];

要生成1.0~100.0的隨機浮點數(shù),只需要調(diào)用
int f = [self getRandomFloat:1.0 to:100.0];

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容