亚洲精品中文字幕无乱码_久久亚洲精品无码AV大片_最新国产免费Av网址_国产精品3级片

C語言

C語言中如何使用隨機(jī)數(shù)

時間:2024-09-21 12:10:51 C語言 我要投稿
  • 相關(guān)推薦

C語言中如何使用隨機(jī)數(shù)

  隨機(jī)數(shù)的使用,是不少在學(xué)C語言過程中進(jìn)行一些小功能開發(fā)的同學(xué)的一個技術(shù)問題。下面是小編為大家?guī)淼年P(guān)于C語言中如何使用隨機(jī)數(shù)的知識,歡迎閱讀。

  C語言中如何使用隨機(jī)數(shù)

  隨機(jī)數(shù)的使用,是不少在學(xué)C語言過程中進(jìn)行一些小功能開發(fā)的同學(xué)的一個技術(shù)問題,今天我們?yōu)榇蠹抑v解如何在C語言中使用隨機(jī)數(shù)。

  通常情況下,使用最多的方法的就是使用rand函數(shù)隨機(jī)生成偽隨機(jī)數(shù)來完成隨機(jī)數(shù)的生成工作。注意這里的偽隨機(jī)數(shù)并非是假的! 只不過是計(jì)算機(jī)按自己的一套理論生成,并不是”完全理想”狀態(tài)下的隨機(jī)數(shù),所以是可以接受的.。

  函數(shù)原型為:int rand(void); 需要包含stdlib頭文件,它可以生成一個0 ~RAND_MAX之間的數(shù)字,其中RAND_MAX是一個宏,VC6下筆者查看為0x7fff,建議大家親自上機(jī)實(shí)驗(yàn)!

  這個時候你可能會遇到下面幾個問題:

  Q1:為什么每次生成的數(shù)字都一樣?

  A1:rand函數(shù)每次生成的數(shù)字與所謂的”種子”有關(guān),使用rand函數(shù)前需要使用srand函數(shù)進(jìn)行種種子(請見后文)。如果沒有調(diào)用,系統(tǒng)會默認(rèn)給1,導(dǎo)致每次的隨機(jī)數(shù)都一樣。

  Q2:為什么最大是0x7fff?

  A1:這可能取決于編譯器環(huán)境,筆者這里是VC6,在rand的函數(shù)中看到定義的最大值為0x7fff,如下圖:

  Q3:如果我想生成特定范圍內(nèi)的數(shù)字,該如何寫呢?

  A3:多多利用%求余運(yùn)算符即可。如:

  生成10以內(nèi)的數(shù)字,可以參考rand()%10

  生成1~10之間的數(shù)字,可以參考rand()%10+1

  特定的,要生成a~b之間的數(shù)字,可以參考rand()%(b-a+1)+a

  更多時候,我們希望每次運(yùn)行生成的數(shù)字都不相同,這個時候需要配合srand函數(shù)來解決這一問題。

  那么srand函數(shù)如何使用呢,先看函數(shù)原型:

  void srand(unsigned seed); 只需要在rand函數(shù)使用之前,調(diào)用srand函數(shù)傳入一個種子即可。但事實(shí)上傳入一個數(shù),往往產(chǎn)生的隨時仍然固定不變。那么較為聰明的寫法目前看來只有使用系統(tǒng)時間作為種子最為合適,所以這里srand的參數(shù)往往傳入time(NULL)參數(shù)作為獲取系統(tǒng)當(dāng)前時間作為種子,來產(chǎn)生不同的結(jié)果!

  并注意類型一致,srand((unsigned)time(NULL)); 記得添加time.h的頭文件!



【C語言中如何使用隨機(jī)數(shù)】相關(guān)文章:

C語言中如何使用sscanf08-27

C 語言中宏的使用08-02

C語言中volatile的使用方法09-30

C語言中strstr()函數(shù)的使用分析08-03

C語言中define的使用方法10-07

簡單講解C語言中宏的定義與使用07-30

C語言中AddRef和Release的使用技巧07-15

c語言中指針的使用方法10-12

c語言中有關(guān)隨機(jī)函數(shù)的使用詳解07-23

C語言EOF如何使用08-29