生成符合柯西分布(cauchy distribution)的随机数向量。
int vsRngCauchy (const int method, VSLStreamStatePtr stream, const SizeType n, float *r, const float a, const float beta);
int vdRngCauchy (const int method, VSLStreamStatePtr stream, const SizeType n, double *r, const double a, const double beta);
参数名 |
类型 |
描述 |
输入/输出 |
---|---|---|---|
method |
int |
随机数生成模式。
|
输入 |
stream |
VSLStreamStatePtr类型 |
随机数流。 |
输入 |
n |
SizeType |
输入输出的长度。 |
输入 |
r |
|
指向结果的指针。 |
输出 |
a |
|
柯西分布的location参数。 |
输入 |
beta |
|
柯西分布的scale参数。 |
输入 |
#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 (vsRngCauchy(VSL_RNG_METHOD_CAUCHY_ICDF, stream, n, r, 0.0, 1.0)) { fprintf(stderr, "Failure in vsRngCauchy\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; }