我正在尝试使用英特尔MKL生成具有均匀分布的离散随机数。
函数viRngUniformBits32
生成n
个随机整数。
我希望动态生成随机数,而不是一次生成n
。
我试过这个,但显然它不起作用。我调用该函数5次,它输出相同的值。
我假设它每次都根据种子值生成序列中的第一个数字。
现在我该如何修改它,以便每次调用此方法时,我都会得到一个random
数字
#include <stdio.h>
#include "mkl.h"
int main()
{
unsigned int out;
VSLStreamStatePtr stream;
vslNewStream(&stream,VSL_BRNG_MCG31,2);
for (int i=0;i<5;i++)
{
//FORMAT viRngUniformBits32( method, stream, n, r );
viRngUniformBits32(VSL_RNG_METHOD_UNIFORMBITS32_STD,stream,1,&out);
printf("%u\t",out);
}
printf("\n");
vslDeleteStream(&stream);
}
答案 0 :(得分:1)
方法viRngUniformBits32
不支持BRNG VSL_BRNG_MCG31
。
所以我使用VSL_BRNG_MT19937
并且它没有任何错误。
感谢jaket
提醒我查看错误代码。