C random C ++rand函數應用

來源:互聯網
上載者:User

標籤:style   http   color   io   使用   ar   for   sp   div   

random函數不是ANSI C標準,不能在gcc,vc等編譯器下編譯通過。但在C語言中int random(num)能夠這樣使用,它返回的是0至num-1的一個隨機數。

 可改用C++下的rand函數來實現。

rand()%n   範圍  0~n-1

rand()主要是實現 產生隨機數,其它我們在這裡能夠無視他

顯然隨意 一個數  rand()%n  範圍顯然是  0~n-1;

那麼 怎樣產生 n~m的數呢? 一樣的   我們僅僅要對rand()進行一些 符號操作即可了;

n+rand()%(m-n+1);    這樣就能夠了

這樣我們 就僅僅有 種子 和 浮點數的沒有分析了,

 

以下來說rand()的使用方法 ,浮點數的放在最後面講 :一般在用這個之前 都要  初始化 一個種子 ,可是  你不寫的話,系統會給你 一個預設的種子,以下是我們自己輸入種子的代碼;

 

int seed;scanf ("%d",&seed);srand(seed);cout<<rand()<<endl;


 

#include <stdio.h>#include <stdlib.h>#include <time.h>int main(){    int arr[15];    //srand(time(NULL));    int seed;    while(1){    scanf("%d",&seed);    srand(seed);    for (int i=0; i<15; i++)         printf ("%d\t",rand()%10);    printf ("\n");      }    return 0;}

經過的比較發現,每個種子都是保持著這個狀態的隨機變數值,會存在系統裡面;

因此,我們要對這個初始化種子  保持著  時刻不同;也就是說 我們還是用 srand(time(NULL));比較好

用例如以下代碼比較合適:

#include <stdio.h>#include <stdlib.h>#include <time.h>int main(){    //int arr[15];    srand(time(NULL)); for (int i=0; i<15; i++)         printf ("%d\t",rand()%10);    printf ("\n");      while (1);    return 0;}


好了,我們如今講下最後一點---------浮點數的隨機產生

rand()%n   =========== 0~n-1     那麼  我們再除以 n  即可了

能夠表示為:   (rand()%n)/(n*1.0)      //這裡注意下 隱式轉換   低------>高

以下給出一個範例:

#include <stdio.h>#include <stdlib.h>#include <time.h>int main(){    int arr[15];    //srand(time(NULL));    int seed;    while(1){    scanf("%d",&seed);    srand(seed);    for (int i=0; i<15; i++)         printf ("%lf\t",(rand()%10)/10.0);    printf ("\n");      }    return 0;}


 

 

假設要  更精確呢?像0.11  這種呢???   道理是一樣的  

 我們能夠輸出   (rand()%n)/(n*1.0)+(rand()%n)/(n*10.0);

由此我們能夠總結出規律:p 表示精確位元

                                                                  {  p }

                                                                  1.......1*(rand()%n)/10^p                                                                

                            

 

C random C ++rand函數應用

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.