对数正态分布函数
生成符合对数正态分布(log normal distribution)的随机数向量。
接口定义
int vsRngLognormal (const int method, VSLStreamStatePtr stream, const SizeType n, float *r, const float a, const float sigma, const float b, const float beta);
int vdRngLognormal (const int method, VSLStreamStatePtr stream, const SizeType n, double *r, const double a, const double sigma, const double b, const double beta);
概率密度函数

参数
参数名  | 
类型  | 
描述  | 
输入/输出  | 
|---|---|---|---|
method  | 
int  | 
随机数生成模式。 
  | 
输入  | 
stream  | 
VSLStreamStatePtr类型  | 
随机数流。  | 
输入  | 
n  | 
SizeType  | 
输入输出的长度。  | 
输入  | 
r  | 
  | 
指向结果的指针。  | 
输出  | 
a  | 
  | 
a参数,用于高斯分布逆累积分布函数(ICDF)生成。  | 
输入  | 
sigma  | 
  | 
sigma参数,用于高斯分布逆累积分布函数(ICDF)生成。  | 
输入  | 
b  | 
  | 
运算的结果加数。  | 
输入  | 
beta  | 
  | 
运算的结果乘数。  | 
输入  | 
依赖
#include "krng.h"
示例
#include <stdio.h>
#include <stdlib.h>
#include "krng.h"
int main()
{
   /* initialize stream with given BRNG type and seed */
    VSLStreamStatePtr stream;
    unsigned seed = 42;
    int errcode = vslNewStream(&stream, VSL_BRNG_MCG59, seed);
    if (errcode != VSL_STATUS_OK) {
        fprintf(stderr, "Failure in newstream\n");
        return 0;
    }
    Sizetype n = 10;
    float *r = (float *)malloc(sizeof(float) * n);
    if (r == NULL) {
        fprintf(stderr, "Failure in malloc\n");
        return 0;
    }
    if (vsRngLognormal(VSL_RNG_METHOD_LOGNORMAL_ICDF, stream, n, r, 5.0, 1.0, 6.0, 5.0)) {
        fprintf(stderr, "Failure in (vsRngLognormal\n");
        goto out;
    }
    /* deinitialize the stream */
    errcode = vslDeleteStream(&stream);
    if (errcode != VSL_STATUS_OK) {
        fprintf(stderr, "Failure in deleting stream\n");
        goto out;
    }
out:
    free(r);
    return 0;
}
父主题: 高性能函数