在C/C++程序開發中,會經常用到隨機數這個功能,例如編寫遊戲類(紙牌)的程序時就需要用到隨機數。
1、生成隨機數
在C語言中,我們使用 <stdlib.h> 頭文件中的 srand和rand 函數來生成隨機數。
void srand(unsigned int seed); // 隨機數生成器的初始化函數
int rand(); // 獲一個取隨機數
srand函數初始化隨機數發生器(俗稱種子),在實際開發中,我們可以用時間作爲參數,只要每次播種的時間不同,那麼生成的種子就不同,最終的隨機數也就不同,通常我們採用
<time.h> 頭文件中的 time 函數即可得到一個精確到秒的時間作爲種子。
示例(book63.c)
/*
* 程序名:book63.c,此程序用於演示隨機數
* 作者:C語言技術網(www.freecplus.net) 日期:20190525
*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int ii;
srand(time(0)); // 播下隨機種子
for (ii=0;ii<5;ii++) // 生成5個隨機數
{
printf("%d ", rand()); // 獲取隨機數
}
printf("\n");
}
運行效果
2、生成一定範圍隨機數
在實際開發中,需求往往是一定範圍內的隨機數,對於產生一定範圍的隨機數,就需要使用一定的技巧,常用的方法是取模運算(取餘數),再做一個加法運算:
int a = rand() % 50; // 產生0~49的隨機數
如果要規定上下限:
int a = rand() % 51 + 100; // 產生100~150的隨機數
取模即取餘數,rand()%51+100,rand()%51是產生 0~50 的隨機數,後面+100保證 a
最小隻能是 100,最大就是 50+100=150。
示例(book64.c)
/*
* 程序名:book64.c,此程序用於演示生成指定範圍內的隨機數
* 作者:C語言技術網(www.freecplus.net) 日期:20190525
*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int ii;
srand(time(0)); // 播下隨機種子。
for (ii=1;ii<=100;ii++) // 生成100個隨機數。
{
printf("%03d ",rand()%51 + 100); // 獲取100-150之間的隨機數。
if (ii%20==0) printf("\n"); // 每20個數換行。
}
printf("\n");
}
運行效果
注意,rand函數生成的隨機數是不會重複的,但取模運算後的結果會重複,在實際開發中,需要編寫額外的代碼排除重複的數據。
3、版權聲明
C語言技術網原創文章,轉載請說明文章的來源、作者和原文的鏈接。
來源:C語言技術網(www.freecplus.net)
作者:碼農有道
如果這篇文章對您有幫助,請點贊支持,或在您的博客中轉發此文,讓更多的人可以看到它,謝謝!!!