[单片机芯片] 怎么让单片机产生真正的随机数?

[复制链接]
15043|67
 楼主| Pretext 发表于 2023-9-18 17:24 | 显示全部楼层 |阅读模式
喂的时间种子都一样,导致随机数都一样,怎么让单片机产生真正的随机数?
LIzs6 发表于 2023-9-19 10:58 | 显示全部楼层
最简单的方法就是用带有随机数发生器的单片机,如CH32V307,或者按照网上常用方法利用ADC噪声或rand随机函数加定时器获取随机值,但这种方法不知道算不算真随机数。
ufbycd 发表于 2023-9-27 21:34 | 显示全部楼层
ADC转换取结果的第0位,转一次取一位,取够16位;将此16位数值作为rand种子,然后从rand取随机数。
sanfuzi 发表于 2023-10-5 18:59 | 显示全部楼层
通过对一个未连接的或带有噪声源的ADC通道进行连续采样,可以获取一系列随机的模拟或数字值。
burgessmaggie 发表于 2023-10-5 19:05 | 显示全部楼层
可以使用软件伪随机数生成器来生成随机数。
uptown 发表于 2023-10-5 19:24 | 显示全部楼层
可以通过麦克风或其他传感器收集环境噪声,然后使用这些噪声来生成随机数。
dspmana 发表于 2023-10-5 19:31 | 显示全部楼层
一些单片机具有硬件外设,例如计数器、定时器等,可以通过这些硬件外设生成随机数
ccook11 发表于 2023-10-5 19:37 | 显示全部楼层
连接到单片机的ADC输入端,通过采集外部噪声来生成随机数。这种方法生成的随机数具有较高的随机性,但需要注意噪声源的稳定性和可靠性。
sheflynn 发表于 2023-10-5 19:43 | 显示全部楼层
可以使用硬件外设、时间戳或其他随机事件来生成随机数种子。
sdlls 发表于 2023-10-5 19:51 | 显示全部楼层
自己搭建一个硬件电路用来产生随机信号,例如利用单片机的内置时钟设为1M,外接一个用温度敏感电阻搭建一个特征频率10M的RC振荡电路,用慢时钟去采集快时钟,然后经过简单处理,就可以得到一个真正的随机数了。
modesty3jonah 发表于 2023-10-5 19:57 | 显示全部楼层
利用单片机内部的计时器和时钟噪声来生成随机数。
cashrwood 发表于 2023-10-5 20:09 | 显示全部楼层
单片机通常会有一个内部时钟,可以提供一个稳定的时钟信号。通过读取时钟的数值,可以得到一个随机的起始值,然后利用一定的算法来不断更新这个值,从而产生一系列随机数。这种方法简单易用,但可能会受到时钟信号的周期性影响,生成的随机数可能有一定的规律性。
dspmana 发表于 2023-10-5 20:20 | 显示全部楼层
单片机产生真正的随机数需要使用真正的随机数生成器,而不是伪随机数生成器。
olivem55arlowe 发表于 2023-10-5 20:54 | 显示全部楼层
利用单片机的某些引脚或外部电路中的物理噪声源作为随机数生成器
jtracy3 发表于 2023-10-5 21:25 | 显示全部楼层
有些单片机配备了硬件随机数发生器,如随机数管道(RNG)。你可以使用这些硬件工具来生成真正的随机数。
sdCAD 发表于 2023-10-5 21:55 | 显示全部楼层
如果你需要伪随机数而不是真随机数,你可以使用伪随机数生成算法
ulystronglll 发表于 2023-10-5 22:26 | 显示全部楼层
使用时钟芯片或实时时钟模块(RTC),获取当前时间戳作为种子,然后通过算法进行处理,以生成随机数。
zerorobert 发表于 2023-10-6 22:51 | 显示全部楼层
生成的随机数都不是真正的随机数,而是伪随机数
uytyu 发表于 2023-10-8 13:23 | 显示全部楼层
可以利用时钟信号的随机性来生成随机数。
minzisc 发表于 2023-10-8 13:32 | 显示全部楼层
有其他硬件资源可以用于生成真正的随机数,例如USB RNG模块、串口模块等
您需要登录后才可以回帖 登录 | 注册

本版积分规则

45

主题

2627

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部