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不重复的随机数,程序中用了循环来判断是否和前面取的随机数相同,相同则进入,下次取随机数,不同则存入数组。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6037

    文章

    44558

    浏览量

    635269
  • C语言
    +关注

    关注

    180

    文章

    7604

    浏览量

    136820
  • 函数
    +关注

    关注

    3

    文章

    4331

    浏览量

    62616

原文标题:教您单片机C语言如何产生随机数

文章出处:【微信号:mcu168,微信公众号:硬件攻城狮】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    “安徽造”量子随机数芯片通过国家密码管理局检测

    近日,国家密码管理局商用密码检测中心出具报告,由安徽问天量子科技公司自主研发的WT-QRNG300量子随机数芯片通过检测。这是国内首家官方商密报告认定、且已实现商用量产及产业化的“量子随机数芯片
    的头像 发表于 12-19 19:06 309次阅读

    问天量子和方寸微电子联合发布量子随机数芯片

    近日,国家密码管理局商用密码检测中心出具报告,问天量子和方寸微电子联合自主研发的WT-QRNG300量子随机数芯片通过检测,这是国内首家官方商密报告认定、且已实现商用量产及产业化的“量子随机数芯片”产品。
    的头像 发表于 12-19 16:18 284次阅读

    51单片机中为什么很少出现printf的身影

    51单片机中为什么很少出现 printf 的身影?是用不了吗? 不是的,51单片机可以用 printf,只是不建议使用。 平时我们在操作系统上写C语言代码,使用 printf 可以把数
    的头像 发表于 12-03 10:46 294次阅读
    51<b class='flag-5'>单片机</b>中为什么很少出现printf的身影

    LuatOS开发之4G模组随机数(random)|实战指南

    本次学习的实战是关于4G模组LuatOS开发的随机数示例指南,希望大家有所收获。
    的头像 发表于 11-30 09:51 201次阅读
    LuatOS开发之4G模组<b class='flag-5'>随机数</b>(random)|实战指南

    解析Air780E模组LuatOS开发的随机数(random) 示例篇

    本文主要解析的是低功耗4G模组Air780E的LuatOS开发随机数(random)实例,我以整理成文分享给大家。
    的头像 发表于 11-29 20:23 128次阅读
    解析Air780E模组LuatOS开发的<b class='flag-5'>随机数</b>(random) 示例篇

    单片机编程语言有哪些选择

    常用的单片机编程语言,以及它们的特点和应用场景: 1. C语言 特点 :C语言是一种通用的编程
    的头像 发表于 11-01 14:13 551次阅读

    单片机hex文件反编译成C语言的过程

    使用C语言编写,然后编译成机器码并烧录到单片机的存储器中。 Hex文件是一种用于存储单片机程序的文件格式,它包含了程序的机器码和一些附加信息,如起始地址、结束地址等。Hex文件通常用于
    的头像 发表于 09-02 10:49 3256次阅读

    雅特力AT32 MCU的随机数生成

    概述产品和生态系统安全性的需求比以往任何时候都更加重要。真随机数是所有安全系统的核心,其质量会影响设计的安全性。因此在没有内置硬件TRNG的AT32的微控制器系列中,如何提高随机数的有效,来符合
    的头像 发表于 08-30 12:26 569次阅读
    雅特力AT32 MCU的<b class='flag-5'>随机数</b>生成

    如何在FPGA中实现随机数发生器

    分享如何在Xilinx Breadboardable Spartan-7 FPGA, CMOD S7中实现4位伪随机数发生器(PRNGs)。
    的头像 发表于 08-06 11:20 675次阅读
    如何在FPGA中实现<b class='flag-5'>随机数</b>发生器

    单片机学习顺序问题

    朋友们,我最近要做一个基于单片机GD32系列的项目. 打算先用STM32系列的单片机先试试手. 但目前也就学了些模电电的知识.了解了一部分单片机的模块知识. 没学过
    发表于 05-18 20:36

    如何入门嵌入式?怎么才算是掌握了单片机

    大一应该学习最重要的 C 语言,51 单片机,大二学 51 单片机也可以,高也应该好好学下,考研或者以后的工作中会有用的。
    的头像 发表于 04-28 14:45 652次阅读

    如何使用Python生成四位随机数

    为了实现这些目标,Python 为我们提供了random() 模块。random() 是一个内置的 Python 模块,用于生成随机数
    的头像 发表于 04-15 12:47 668次阅读

    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

    汽车ECU编程是单片机C语言还是汇编语言

    汽车ECU编程是单片机C语言吗?还是汇编语言
    发表于 01-26 06:08