# 随机数 ***Copyright © Quectel Wireless Solutions Co., Ltd. 2026. All rights reserved.*** --- # 功能概述 随机数生成器主要分为两大类:硬件随机数生成器(True Random Number Generator, TRNG)和软件伪/拟随机数生成器(Pseudo-Random Number Generator, PRNG)。这两者在原理、性能和适用领域上有着本质的区别。 **硬件随机数生成器(真随机数)** 其核心原理是利用物理熵源的不确定性。它通过采集外部物理过程(如电阻热噪声、宇宙背景辐射、半导体中的量子隧穿效应,甚至大气噪声)来产生随机数。由于物理过程在量子层面具有内禀的不可预测性,且无法被外部计算逻辑推导,因此硬件随机数具有不可重现和非确定性的特点。 应用场景:因其极高的安全性和不可预测性,主要应用于顶级安全领域,如金融核心系统的支付密钥生成、数字签名、SSL/TLS加密证书创建,以及国家层面的密码系统和军事保密通信。 **软件伪/拟随机数生成器(伪随机数)** 其核心原理基于数学算法。它以一个初始值(称为“种子”,通常取自系统时间戳或用户鼠标移动等)作为输入,通过固定的递推公式(如线性同余法、梅森旋转算法)或加密算法(如哈希链)产生看似随机的数字序列。 需要强调的是,伪随机数具有确定性和周期性——只要种子相同,生成的随机序列必然完全相同;且经过足够长的周期后,序列会重复。但优秀的伪随机数算法(特别是密码学安全的CSPRNG)在周期足够长的情况下,其统计特性足以通过标准的随机性测试,且在计算上不可区分于真随机数。 应用场景:占据了日常数字化应用的绝大部分,包括程序开发中的单元测试、蒙特卡洛模拟、游戏中的掉宝率与地图生成、神经网络参数初始化、大数据抽样,以及非极端高安全要求的Token生成。 我们当前对外提供的随机数接口,基于软件伪随机数生成器(PRNG)实现。 我们采用经过行业验证的密码学安全算法(如基于SHA-256的确定性随机数发生器),确保输出的序列具备极高的统计均匀性和不可逆向推导性。 # 随机数API ## 头文件 *qosa_def.h* ## 函数详解 ### qosa_rand - **功能描述** 获取一个随机数。 - **函数原型** ```c int qosa_rand(void) ``` - **参数说明** 无 - **返回值说明** 返回一个随机数 # 示例代码 完整示例代码请查看https://github.com/UniRTOS/UniRTOS-Doc-Examples/blob/main/system/rand/rand.c