程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C++產生隨機數

C++產生隨機數

編輯:關於C++

說明

//在這裡srand的作用很重要,srand()的作用是初始化隨機數種子,種子的偽隨機數計算的依據,
//種子相同,計算得到的隨機數也是相同的,通常函數沒有用到srand()而是用rand(),則是相當於調用了srand(1),
//這也解決了我上學期做最後那個記憶游戲時,每次重新運行程序時,產生的隨機數都是相同的問題
//time(NULL)返回的值是自1970.1.1零點以來經過的秒數,所以每時每刻都是不同的

代碼

#include
#include    //time()
#include  //srand()+rand()
int main()
{
    srand(time(NULL));
    //產生[a,b]
    int m = rand() % a + b;
    printf("%d\n", m);
}

//主要是生成隨機數,但是rand()函數生成隨機數區間為[0,RAND_MAX]

//RAND_MAX至少為32767(2e15-1),並且在不同條件下數值可能不同

//這裡作者用了放大的方式將區間放大(代碼來自劉汝佳)

#include
#include    //time()
#include  //srand()+rand()
int n = 100, m = 100000;

//這個函數是取得[0,1]區間內的實數,之後在下一個函數中擴大(n-1)倍在取整

double random()
{
    return (double)rand() / RAND_MAX;
}
int random(int m)
{
    return (int)(random()*(m - 1) + 0.5);
}
int main()
{
    srand(time(NULL));
    printf("%d %d\n", n, m);
    for (int i = 0; i < m; i++)
    {
        if (rand() % 2 == 0)
        {
            printf("A");
        }
        else
        {
            printf("B");
        }
        int X, Y;
        for (;;)
        {
            X = random(n) + 1;
            Y = random(n) + 1;
            if (X != Y)
            {
                break;
            }
        }
        printf("%d %d\n", X, Y);
    }
    return 0;
}
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved