衡阳派盒市场营销有限公司

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

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

3天內不再提示

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

GReq_mcu168 ? 來源:玩轉單片機 ? 2019-11-26 14:25 ? 次閱讀

隨機數在單片機的應用中也是很多的,當然產生隨機數的方法有很多,當中有一個就是利用單片機定時器,取出未知的定時器THX和TLX的值,再加以運算得到一個規定范圍內的隨機數值。這做法也是可行的。或者預先寫好一個隨機數表,然后進行取數據。也是可以的。

KEIL里面產生隨機數的函數確實是rand(),但頭文件是stdlib.h,不是time.h。C語言提供了一些庫函數來實現隨機數的產生。

C語言中有三個通用的隨機數發生器,分別為 rand函數、random函數、randomize 函數,但是rand函數產生的并不是真意正義上的隨機數,是一個偽隨機數,是根據一個數,稱之為種子,為基準以某個遞推公式推算出來的一系數,當這系列數很大的時候,就符合正態公布,從而相當于產生了隨機數。

但這不是真正的隨機數,當計算機正常開機后,這個種子的值是定了的,除非破壞了系統,為了改變這個種子的值,C提供了srand()函數,它的原形是void srand( int a)。在調用rand函數產生隨機數前,必須先利用srand()設好隨機數種子,如果未設隨機數種子,rand()在調用時會自動設隨機數種子為1。一般用for語句來設置種子的個數。

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

方法一

定時器直接隨機取值

每按一次按鍵生成一個隨機數,這個隨機數實際是把定時器的值給取出來了,并不能算絕對的隨機、方法二才是真正意義上的隨機。

方法二

用定時器加rand()隨機函數來實現

單片機上電之后通過按鍵去啟動取隨機數,若是單片機上電就立即取隨機數的話,那每次上電隨機的結果都是一樣的。然后是0 到9不重復的隨機數,程序中用了循環來判斷是否和前面取的隨機數相同,相同則進入,下次取隨機數,不同則存入數組。

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

    關注

    6043

    文章

    44621

    瀏覽量

    638605
  • C語言
    +關注

    關注

    180

    文章

    7614

    瀏覽量

    137726
  • 函數
    +關注

    關注

    3

    文章

    4346

    瀏覽量

    62977

原文標題:教您單片機C語言如何產生隨機數

文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    “安徽造”量子隨機數芯片通過國家密碼管理局檢測

    近日,國家密碼管理局商用密碼檢測中心出具報告,由安徽問天量子科技公司自主研發的WT-QRNG300量子隨機數芯片通過檢測。這是國內首家官方商密報告認定、且已實現商用量產及產業化的“量子隨機數芯片
    的頭像 發表于 12-19 19:06 ?428次閱讀

    問天量子和方寸微電子聯合發布量子隨機數芯片

    近日,國家密碼管理局商用密碼檢測中心出具報告,問天量子和方寸微電子聯合自主研發的WT-QRNG300量子隨機數芯片通過檢測,這是國內首家官方商密報告認定、且已實現商用量產及產業化的“量子隨機數芯片”產品。
    的頭像 發表于 12-19 16:18 ?402次閱讀

    51單片機中為什么很少出現printf的身影

    51單片機中為什么很少出現 printf 的身影?是用不了嗎? 不是的,51單片機可以用 printf,只是不建議使用。 平時我們在操作系統上寫C語言代碼,使用 printf 可以把數
    的頭像 發表于 12-03 10:46 ?545次閱讀
    51<b class='flag-5'>單片機</b>中為什么很少出現printf的身影

    LuatOS開發之4G模組隨機數(random)|實戰指南

    本次學習的實戰是關于4G模組LuatOS開發的隨機數示例指南,希望大家有所收獲。
    的頭像 發表于 11-30 09:51 ?298次閱讀
    LuatOS開發之4G模組<b class='flag-5'>隨機數</b>(random)|實戰指南

    解析Air780E模組LuatOS開發的隨機數(random) 示例篇

    本文主要解析的是低功耗4G模組Air780E的LuatOS開發隨機數(random)實例,我以整理成文分享給大家。
    的頭像 發表于 11-29 20:23 ?213次閱讀
    解析Air780E模組LuatOS開發的<b class='flag-5'>隨機數</b>(random) 示例篇

    單片機編程語言有哪些選擇

    常用的單片機編程語言,以及它們的特點和應用場景: 1. C語言 特點 :C語言是一種通用的編程
    的頭像 發表于 11-01 14:13 ?954次閱讀

    單片機hex文件反編譯成C語言的過程

    使用C語言編寫,然后編譯成機器碼并燒錄到單片機的存儲器中。 Hex文件是一種用于存儲單片機程序的文件格式,它包含了程序的機器碼和一些附加信息,如起始地址、結束地址等。Hex文件通常用于
    的頭像 發表于 09-02 10:49 ?3848次閱讀

    keil可以讀出單片機的程序嗎

    表述存在一定的誤解,因為Keil主要是用于編寫、編譯和調試單片機程序的工具,而不是直接從單片機中讀取已編程代碼的工具。 一、Keil的主要功能 編程開發 :Keil允許用戶使用C語言
    的頭像 發表于 09-02 10:32 ?1249次閱讀

    雅特力AT32 MCU的隨機數生成

    概述產品和生態系統安全性的需求比以往任何時候都更加重要。真隨機數是所有安全系統的核心,其質量會影響設計的安全性。因此在沒有內置硬件TRNG的AT32的微控制器系列中,如何提高隨機數的有效,來符合
    的頭像 發表于 08-30 12:26 ?710次閱讀
    雅特力AT32 MCU的<b class='flag-5'>隨機數</b>生成

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

    分享如何在Xilinx Breadboardable Spartan-7 FPGA, CMOD S7中實現4位偽隨機數發生器(PRNGs)。
    的頭像 發表于 08-06 11:20 ?773次閱讀
    如何在FPGA中實現<b class='flag-5'>隨機數</b>發生器

    單片機學習順序問題

    朋友們,我最近要做一個基于單片機GD32系列的項目. 打算先用STM32系列的單片機先試試手. 但目前也就學了些模電電的知識.了解了一部分單片機的模塊知識. 沒學過
    發表于 05-18 20:36

    如何入門嵌入式?怎么才算是掌握了單片機

    大一應該學習最重要的 C 語言,51 單片機,大二學 51 單片機也可以,高也應該好好學下,考研或者以后的工作中會有用的。
    的頭像 發表于 04-28 14:45 ?720次閱讀

    如何使用Python生成四位隨機數

    為了實現這些目標,Python 為我們提供了random() 模塊。random() 是一個內置的 Python 模塊,用于生成隨機數
    的頭像 發表于 04-15 12:47 ?776次閱讀

    TC389芯片上HSM的TRNG真隨機數功能,如何判斷其隨機能力呢?

    想咨詢一下,TC389芯片上HSM的TRNG真隨機數功能,如何判斷其隨機能力呢?有什么資料或者測試內容嗎?
    發表于 03-05 07:20

    請問rt-thread studio如何使用硬件隨機數生成器?

    指導一下。 經過查詢得知可以使用rt_hw_random_get()函數來獲取硬件隨機數,請文需要做什么配置才能使用rt_hw_random_get()函數。
    發表于 02-23 08:03
    网络百家乐电脑| 棋牌真钱游戏| 百家乐庄闲机率| 百家乐官网试玩账户| 外围赌球软件| 百家乐有作弊的吗| 乐九百家乐官网现金网| 大发888游戏平台 34| 百家乐斗地主在哪玩| 山西百家乐官网用品| 网上百家乐官网平台下载| 棋牌游戏源码| 百家乐小路规则| 真钱百家乐注册送| 百家乐官网英皇娱乐场| 百家乐官网有方式赢钱吗| 博彩qq群| 大发888新网址| 钱柜百家乐的玩法技巧和规则| 网络百家乐免费试玩| 唐人街百家乐官网的玩法技巧和规则| 百家乐官网分析软件下| 一二博网址| 钱柜娱乐城现金网| 大发888游戏安装失败| 大发888娱乐城注册| 百家乐筹码14克粘土| 波音百家乐现金网投注平台排名导航| 在线百家乐官网下| 百家乐官网群lookcc| 百家乐官网免费注册| 百家乐官网输一押二| 网上百家乐官网信誉| 澳门百家乐官网娱乐城开户| 百家乐官网单跳打法| 高碑店市| 百家乐官网单跳双跳| 柘荣县| 网上玩百家乐官网犯法| 百家乐官网视频游365| 百家乐官网桌布橡胶|