rand.c 文档
文件概述
rand.c 是一个实现随机数生成功能的库文件,提供多种随机数生成方法。该文件是 libcc 项目的一部分,遵循开源许可证(见文件头部注释)。
主要功能
1. 随机数生成
- 伪随机数:基于线性同余生成器(LCG)生成伪随机数。
- 真随机数:支持从系统熵源获取真随机数(如
/dev/urandom)。 - 概率计算:提供概率分布计算功能。
2. 核心函数
- 函数:
_cc_srand - 初始化随机数生成器的种子。
-
参数:
seed: 种子值,如果为 0 则使用系统时间作为种子。
-
函数:
_cc_rand - 生成一个指定范围内的随机整数。
- 参数:
n: 随机数的上限(不包含)。
-
返回值:随机整数。
-
函数:
_cc_randf - 生成一个 [0, 1) 范围内的随机浮点数。
-
返回值:随机浮点数。
-
函数:
_cc_random_bytes - 生成指定长度的随机字节序列。
-
参数:
buf: 输出缓冲区。nbytes: 要生成的字节数。
-
函数:
_cc_get_probability - 根据概率分布计算是否触发事件。
- 参数:
prd: 概率分布结构体指针。T: 当前尝试次数。
- 返回值:1 表示触发,0 表示未触发。
使用示例
示例 1:生成随机整数
#include <libcc/rand.h>
int main() {
int i;
for (i = 0; i < 10; i++) {
printf("Random: %d\n", _cc_rand(100));
}
return 0;
}
示例 2:生成随机字节序列
#include <libcc/rand.h>
int main() {
byte_t buf[16];
_cc_random_bytes(buf, sizeof(buf));
return 0;
}
注意事项
- 种子初始化:建议在程序启动时调用
_cc_srand初始化种子。 - 线程安全:随机数生成器不是线程安全的,多线程环境下需自行加锁。
许可证
该文件遵循开源许可证,详细信息请参考文件头部的注释。