在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何在C語言中使用隨機數

C語言編程學習基地 ? 來源:未知 ? 作者:胡薇 ? 2018-11-09 16:46 ? 次閱讀

隨機數的使用,是不少在學C語言過程中進行一些小功能開發的同學的一個技術問題,今天我們為大家講解如何在C語言中使用隨機數。

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

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

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

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

A1:rand函數每次生成的數字與所謂的”種子”有關,使用rand函數前需要使用srand函數進行種種子(請見后文)。如果沒有調用,系統會默認給1,導致每次的隨機數都一樣。

Q2:為什么最大是0x7fff?

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

Q3:如果我想生成特定范圍內的數字,該如何寫呢?

A3:多多利用%求余運算符即可。如:

生成10以內的數字,可以參考rand()%10

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

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

更多時候,我們希望每次運行生成的數字都不相同,這個時候需要配合srand函數來解決這一問題。關于具體原因,大家可以參考rand函數與srand函數的實現細節來加以理解,代碼如下:

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

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

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

測試代碼如下:

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • C語言
    +關注

    關注

    180

    文章

    7614

    瀏覽量

    137719
  • 隨機數
    +關注

    關注

    0

    文章

    18

    瀏覽量

    12048

原文標題:C語言如何使用隨機數?

文章出處:【微信號:cyuyanxuexi,微信公眾號:C語言編程學習基地】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    請問Ti的哪個庫可以調用C語言隨機數產生函數?

    Ti的哪個庫可以調用C語言隨機數產生函數啊,就是怎么在CCS里產生隨機數
    發表于 07-31 07:03

    單片機C語言如何產生隨機數

    來實現隨機數的產生。 C語言中有三個通用的隨機數發生器,分別為 rand函數、random函數、randomize 函數,但是rand函數產生的并不是真意正義上的
    發表于 05-14 15:14

    產生隨機數的方法有哪些

    寫好一個隨機數表,然后進行取數據。也是可以的。KEIL里面產生隨機數的函數確實是rand(),但頭文件是stdlib.h,不是time.h。C語言提供了一些庫函數來實現
    發表于 07-15 09:08

    什么是隨機數

    做開發的工程師們應該或多或少都接觸過隨機數,可能認為它就是一個隨機生成的數字嘛,使用時也很簡單,只要調用開發語言提供的函數即可。但實際上隨機數后面還是有著比較復雜但也有趣的知識點的。根
    發表于 07-22 09:42

    C語言中隨機數的產生及性能檢驗

    系統仿真或加密算法中常需要產生滿足一定分布函數的 偽隨機數 ,高級程序設計語言中的庫函數采用線性同余法產生一個在[0,32767] 服從均勻分布的偽隨機數,但每次程序運行的結果都
    發表于 07-07 16:35 ?70次下載

    C語言random函數偽隨機數產生

    C語言的stalib.h庫里面的random函數可以得到一個0-0x7FFFh的隨機數,當然,調用隨機數函數之前,是要進行種子的篩選的,以當前的時間參數作為種子,可以使得偽
    發表于 08-25 17:56 ?1.3w次閱讀

    C#教程之偽隨機數加密

    C#教程之偽隨機數加密,很好的C#資料,快來學習吧。
    發表于 04-21 09:52 ?5次下載

    C語言教程之循環顯示隨機數問題

    C語言教程之循環顯示隨機數問題,很好的C語言資料,快來學習吧。
    發表于 04-25 15:03 ?0次下載

    產生隨機數

    一個自己寫的產生隨機數的工程
    發表于 12-01 15:45 ?13次下載

    C語言中隨機數的生成代碼

    C語言中隨機數的生成完整代碼:
    的頭像 發表于 02-20 09:21 ?1w次閱讀

    單片機產生隨機數的兩種方法

    寫好一個隨機數表,然后進行取數據。也是可以的。KEIL里面產生隨機數的函數確實是rand(),但頭文件是stdlib.h,不是time.h。C語言提供了一些庫函數來實現
    發表于 03-01 11:04 ?2336次閱讀

    DApp的隨機數為什么會被黑客破解

    隨機數可以分為真隨機數和偽隨機數。真隨機數需要同時滿足隨機性、不可預測性、不可重現性,而偽隨機數
    發表于 10-18 10:59 ?2509次閱讀

    單片機C語言如何產生隨機數

    C語言中有三個通用的隨機數發生器,分別為 rand函數、random函數、randomize 函數,但是rand函數產生的并不是真意正義上的隨機數,是一個偽
    的頭像 發表于 11-26 14:25 ?7606次閱讀

    單片機C語言如何產生隨機數

    隨機數在單片機的應用中也是很多的,當然產生隨機數的方法有很多,當中有一個就是利用單片機定時器,取出未知的定時器THX和TLX的值,再加以運算得到一個規定范圍內的隨機數值。這做法也是可行的。或者預先寫好一個
    發表于 02-08 17:12 ?11次下載
    單片機<b class='flag-5'>C</b><b class='flag-5'>語言</b>如何產生<b class='flag-5'>隨機數</b>

    何在FPGA中實現隨機數發生器

    分享如何在Xilinx Breadboardable Spartan-7 FPGA, CMOD S7中實現4位偽隨機數發生器(PRNGs)。
    的頭像 發表于 08-06 11:20 ?771次閱讀
    如<b class='flag-5'>何在</b>FPGA中實現<b class='flag-5'>隨機數</b>發生器
    主站蜘蛛池模板: 天天撸视频 | 人人人人草 | 午夜三级国产精品理论三级 | 分分操免费视频在线观看 | 好硬好湿好爽再深一点h | 久久久午夜视频 | 九色综合伊人久久富二代 | 午夜视频免费国产在线 | 禁漫羞羞a漫入口 | 日日夜夜天天久久 | aaa在线观看高清免费 | 91成人在线播放 | 日日操免费视频 | 综合精品视频 | 人人插人人干 | 天天爽夜夜春 | 俺去俺来也www色官网免费的 | 99久久精品国产自免费 | 日本高清免费一本视频在线观看 | 美女网站一区二区三区 | 国产精品美女一级在线观看 | 欧美午夜色视频国产精品 | 中国美女毛片 | 开心激情播播网 | 天天色综合久久 | 天天色国产 | video另类蛇交 | 男人视频网站 | aaaa黄色片 | 天天插天天摸 | 日韩综合nv一区二区在线观看 | 五月天精品在线 | 午夜快播 | 欧美在线黄 | 初恋视频黄色 | 亚洲人色大成年网站在线观看 | 香蕉色网 | 亚洲黄色一区 | 五月婷婷婷婷婷 | 日本福利小视频 | 亚洲男人天堂2021 |