使用英特尔MKL动态生成随机数

时间:2014-03-21 02:42:48

标签: c random intel intel-mkl

我正在尝试使用英特尔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);
}

1 个答案:

答案 0 :(得分:1)

方法viRngUniformBits32不支持BRNG VSL_BRNG_MCG31

所以我使用VSL_BRNG_MT19937并且它没有任何错误。

感谢jaket提醒我查看错误代码。