C語言rand函數生成隨機數詳解和示例

在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

作者:碼農有道

如果這篇文章對您有幫助,請點贊支持,或在您的博客中轉發此文,讓更多的人可以看到它,謝謝!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章