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

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

    关注

    6074

    文章

    45340

    浏览量

    663562
  • C语言
    +关注

    关注

    183

    文章

    7642

    浏览量

    144613
  • 函数
    +关注

    关注

    3

    文章

    4406

    浏览量

    66838

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    为什么单片机还在用C语言编程?

    说起单片机我们就会想到C语言单片机为什么还在用C语言编程?现在有很多很好用的高级
    发表于 11-28 07:37

    C语言单片机C语言有什么差异

    区别是由编译器决的,只能参考对应的编译手册,即使同种平台不同的编译器对C的扩展也有不同。 3、单片机c语言编程是基于C
    发表于 11-14 07:55

    ‌基于RNG90的真随机数生成器技术解析与应用指南

    Microchip Technology RNG90 CryptoAuthentication™器件设计用于需要安全随机数发生器的系统。RNG90即用型,无需任何定制。Microchip RNG90
    的头像 发表于 10-10 15:01 411次阅读
    ‌基于RNG90的真<b class='flag-5'>随机数</b>生成器技术解析与应用指南

    随机数和伪随机数的区别

    随机数在当前程序运行环境中是一种常用参数,目前主要分为两种,伪随机数和真随机数,本期我们就来讲一下二者的区别。
    的头像 发表于 08-27 17:46 1835次阅读

    单片机9种常用软件架构-C语言

    单片机9种常用软件架构-C语言
    发表于 06-10 20:35

    单片机C语言实例(350+例)

    350+单片机C语言实例! 纯分享帖,需要者可点击附件免费获取完整资料~~~【免责声明】本文系网络转载,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请第一时间告知,删除内容!
    发表于 05-22 21:47

    单片机C语言基础】1、什么是单片机及课程内容简单介绍

    本帖最后由 liuqiangew 于 2025-5-22 21:32 编辑 单片机C语言基础视频教程,想要学习的同学可以下载学习,资料包括学习资料和学习视频。 纯分享帖,需要者可点击附件
    发表于 05-22 21:29

    单片机c语言编程实例大全

    单片机c语言编程实例大全_18
    发表于 04-30 16:11 6次下载

    labview求助:想写一个labview输出不重复随机数的程序,有没有大佬帮忙看看这个假分支要怎么写?

    大佬们想写一个labview输出不重复随机数的程序,有没有大佬帮忙看看这个假分支要怎么写
    发表于 04-27 08:39

    labview怎么输出不重复的整数随机数

    大佬们我想问一下怎么能够生成不重复的随机数,labview能够输出整数随机数
    发表于 04-16 11:15

    新概念51单片机C语言教程入门、提高、开发、拓展全攻略

    资料介绍 从实际应用入手,以实验过程和实验现象为主导,循序渐进地讲述51单片机C语言编程方法以及51单片机的硬件结构和功能应用。全书共分5篇,分别为入门篇、内外部资源操作篇、提高篇、实
    发表于 04-15 13:57

    “Quantum Origin”成首个获NIST验证的软件量子随机数生成器

    -Quantinuum的“Quantum Origin”成为首个通过NIST验证的软件量子随机数生成器 Quantum Origin获得NIST SP 800-90B对其验证熵源的批准 增强了联邦
    的头像 发表于 04-03 15:22 659次阅读

    单片机C语言编程宝典大全,初学必备【强推下载!】

    资料介绍:包含 1. 51单片机入门教程 2. 初学者适用:单片机C语言实例100例(代码及释义) 3. 51单片机
    发表于 03-14 11:03

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

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

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

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