Exponential Distribution Function
Generate a random number vector that conforms to exponential distribution.
Interface Definition
int vsRngExponential (const int method, VSLStreamStatePtr stream, const SizeType n, float *r, const float a, const float beta);
int vdRngExponential (const int method, VSLStreamStatePtr stream, const SizeType n, double *r, const double a, const double beta);
Probability Density Function

Parameters
Parameter |
Type |
Description |
Input/Output |
|---|---|---|---|
method |
int |
Random number generation method.
|
Input |
stream |
VSLStreamStatePtr type |
Random number stream. |
Input |
n |
SizeType |
Length of the output vector. |
Input |
r |
|
Pointer to the result. |
Output |
a |
|
Addend of the logarithmic operation result. |
Input |
beta |
|
Multiplier of the logarithmic operation result. |
Input |
Dependencies
#include "krng.h"
Examples
#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 (vsRngExponential(VSL_RNG_METHOD_EXPONENTIAL_ICDF, stream, n, r, 0.0, 1.0)) {
fprintf(stderr, "Failure in vsRngExponential\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;
}
Parent topic: High-performance Functions