发新帖我要提问
12
返回列表
打印
[技术问答]

单片机C语言如何产生随机数

[复制链接]
楼主: sesefadou
手机看帖
扫描二维码
随时随地手机跟帖
21
qiufengsd| | 2025-3-20 09:53 | 只看该作者 回帖奖励 |倒序浏览
伪随机数生成器具有周期性,即它们最终会重复之前的随机数序列。

使用特权

评论回复
22
bartonalfred| | 2025-3-20 10:38 | 只看该作者
更为复杂的伪随机数生成器,具有较长的周期和较好的统计特性。

使用特权

评论回复
23
deliahouse887| | 2025-3-20 14:01 | 只看该作者
可以通过模拟数字转换器(ADC)读取外部模拟信号的微小波动来获取随机数。

使用特权

评论回复
24
modesty3jonah| | 2025-3-20 14:37 | 只看该作者
#include <stdio.h>

#define MAX_RAND 32767
#define A 16807
#define C 0
#define M 2147483647

int rand() {
    static int seed = 1; // 初始种子
    seed = (A * seed + C) % M;
    return seed;
}

int main() {
    int random_number = rand() % MAX_RAND; // 生成0到MAX_RAND之间的随机数
    printf("Random number: %d\n", random_number);
    return 0;
}

使用特权

评论回复
25
bartonalfred| | 2025-3-20 15:27 | 只看该作者
结合ADC噪声和线性同余法生成更复杂的随机数。

使用特权

评论回复
26
lihuami| | 2025-3-20 16:51 | 只看该作者
利用单片机内部的硬件特性,如时钟的轻微偏差、内存的初始化状态等,作为随机数的来源。

使用特权

评论回复
27
星辰伴梦| | 2025-3-21 22:39 | 只看该作者
srand()函数是用来设置随机数种子的

使用特权

评论回复
28
旧时光放映机| | 2025-3-21 23:23 | 只看该作者
利用单片机定时器取值来产生随机数,这种方法对定时器的精度有没有什么要求呢

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则