LMMC
Lamina Mathematic core
载入中...
搜索中...
未找到
random_discrete.c 文件参考
#include <math.h>
#include "random_internal.h"
random_discrete.c 的引用(Include)关系图:

浏览该文件的源代码.

函数

lmmc_status_t lmmc_rng_poisson (lmmc_rng_t *rng, lmmc_real_t lambda, size_t *out)
 生成 Poisson 分布样本 \(\mathrm{Poisson}(\lambda)\) 。
lmmc_status_t lmmc_rng_binomial (lmmc_rng_t *rng, size_t n, lmmc_real_t p, size_t *out)
 生成二项分布样本 Binomial(n, p)。

函数说明

◆ lmmc_rng_poisson()

lmmc_status_t lmmc_rng_poisson ( lmmc_rng_t * rng,
lmmc_real_t lambda,
size_t * out )

生成 Poisson 分布样本 \(\mathrm{Poisson}(\lambda)\) 。

lambda >= 10 使用 PTRD(Hörmann)算法(接受-拒绝), lambda < 10 使用逆变换法(Knuth 方法)。

参数
[in]rng已初始化的 RNG。
[in]lambda期望值(> 0)。
[out]out输出样本值(非负整数)。
返回
LMMC_STATUS_OK 成功; LMMC_STATUS_INVALID_ARGUMENT 若 lambda 非有限、<= 0 或指针为 NULL; LMMC_STATUS_NUMERICAL_FAILURE 若样本超出 size_t 范围或中间量非有限。
注解
不分配堆内存;接受-拒绝过程消耗的随机数次数不固定。 out 仅成功时写入,失败时 RNG 状态可能已推进。

在文件 random_discrete.c 第 94 行定义.

引用了 lmmc_rng_poisson(), LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK , 以及 lmmc_rng_t::state.

被这些函数引用 lmmc_rng_poisson().

函数调用图:
这是这个函数的调用关系图:

◆ lmmc_rng_binomial()

lmmc_status_t lmmc_rng_binomial ( lmmc_rng_t * rng,
size_t n,
lmmc_real_t p,
size_t * out )

生成二项分布样本 Binomial(n, p)。

小均值参数使用精确逆 CDF,其余参数使用 BTPE 接受-拒绝算法; 超过 IEEE-754 精确整数范围的 n 会拆分为独立精确子问题。

参数
[in]rng已初始化的 RNG。
[in]n试验次数。
[in]p有限成功概率(0 <= p <= 1)。
[out]out输出样本值;参数无效时保持不变。
返回
LMMC_STATUS_OK 成功;参数或指针无效时返回 LMMC_STATUS_INVALID_ARGUMENT。

在文件 random_discrete.c 第 275 行定义.

引用了 lmmc_rng_binomial(), LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK , 以及 lmmc_rng_t::state.

被这些函数引用 lmmc_rng_binomial().

函数调用图:
这是这个函数的调用关系图: