iOS-隨機數

來源:互聯網
上載者:User

iOS-隨機數

在C中提供了rand()、srand()、random()、arc4random()幾個函數。
使用 arc4random 產生隨機數
1.1 擷取一個隨機整數範圍在:[0,100)包括0,不包括100

int x = arc4random() % 100;

1.2 擷取一個隨機數範圍在:[100,200],包括100,包括200

int y =100 +  (arc4random() % 101);

1.3抽取方法

擷取一個隨機整數,範圍在[from,to],包括from,包括to

-(int)getRandomNumber:(int)from to:(int)to    {      return (int)(from + (arc4random() % (to – from + 1)));    }

使用 rand() 產生隨機數
注意:

在標準的C庫中函數rand()可以產生0~RAND_MAX之間的一個隨機數,其中RAND_MAX 是stdlib.h 中定義的一個整數,它與系統有關。
rand()函數沒有輸入參數,直接通過運算式rand()來引用;

printf("Random numbers are: %i %i\n",rand(),rand());

偽隨機數:
因為rand()函數是按指定的順序來產生整數,因此每次執行上面的語句都列印相同的兩個值,所以說C語言的隨機並不是真正意義上的隨機,有時候也叫偽隨機數。
為了使程式在每次執行時都能產生一個新序列的隨機值,
我們通常通過為隨機數產生器提供一粒新的隨機種子。函數 srand()(來自stdlib.h)可以為隨機數產生器播散種子。只要種子不同rand()函數就會產生不同的隨機數序列。
srand()稱為隨機數產生器的初始化器。
用rand()隨機產生在[x,y]內的整數

/*k即為所求範圍內隨機產生的數,rand()%a的結果最大為a-1*/int k= x+rand()%(y-x+1)

比較
rand()和random()實際並不是一個真正的偽隨機數發生器,在使用之前需要先初始化隨機種子,否則每次產生的隨機數一樣。

arc4random() 是一個真正的偽隨機演算法,不需要產生隨機種子,因為第一次調用的時候就會自動產生。而且範圍是rand()的兩倍。在iPhone中,RAND_MAX是0x7fffffff (2147483647),而arc4random()返回的最大值則是 0x100000000 (4294967296)。

精確度比較:arc4random() > random() > rand()。

//  1. rand(),不加這句每次產生的隨機數不變srand((unsigned)time(0));         int i = rand() % 100;      // 2. random() srandom(time(0));        int i = random() % 100;// 3. arc4random() int i = arc4random() % 100 ;

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.