5 random
我想使用 GSL 的均匀随机数生成器。在他们的网站上,他们包含以下示例代码:
#include <stdio.h>
#include <gsl/gsl_rng.h>
int
main (void)
{
const gsl_rng_type * T;
gsl_rng * r;
int i, n = 10;
gsl_rng_env_setup();
T = gsl_rng_default;
r = gsl_rng_alloc (T);
for (i = 0; i < n; i++)
{
double u = gsl_rng_uniform (r);
printf ("%.5f\n", u);
}
gsl_rng_free (r);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
然而,这不依赖于任何种子,因此每次都会产生相同的随机数。
他们还指定了以下内容:
生成器本身可以使用环境变量 GSL_RNG_TYPE 进行更改。这是使用种子值 123 和多重递归生成器 mrg 的程序的输出,
Run Code Online (Sandbox Code Playgroud)$ GSL_RNG_SEED=123 GSL_RNG_TYPE=mrg ./a.out
但我不明白如何实现这一点。关于我可以对上述代码进行哪些修改以合并种子,有什么想法吗?
阅读18.6 随机数环境变量来了解该gsl_rng_env_setup()函数正在做什么。它从环境变量中获取生成器类型和种子。
然后参见18.3 随机数生成器初始化- 如果您不想从环境变量中获取种子,可以使用gsl_rng_set()来设置种子。