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;
}

注意事项

  1. 种子初始化:建议在程序启动时调用 _cc_srand 初始化种子。
  2. 线程安全:随机数生成器不是线程安全的,多线程环境下需自行加锁。

许可证

该文件遵循开源许可证,详细信息请参考文件头部的注释。