Intel MKL一次可以生成多少个随机数?似乎超出了某些限制
How many random numbers can Intel MKL generate once? Some limit seems to be exceeded
下面的c++代码与Intel的Math Kernel Library (MKL)中的Vector Statistical Library (VSL)提供的示例几乎相同。然而,一旦变量'total'大于,比如说3*10^9,它将输出
MKL ERROR: Parameter 3 was incorrect on entry to vdRngUniform.
所以我猜这意味着"total"可能太大了。但手册中写着"SFMT19937方法的周期长度等于生成序列的2^19937-1",远远大于10^9。
我想知道上限到底是多少,例如,对于double(我在手册中找不到任何相关信息)。当然,任何能解决这个问题的方法都会受到赞赏。提前感谢!
......
MKL_LONG status;
VSLStreamStatePtr stream;
......
int main(){
vslNewStream(&stream, VSL_BRNG_SFMT19937, 777);
rnd_data = (double*)malloc(total * sizeof(double));
status = vdRngUniform(VSL_RNG_METHOD_UNIFORM_STD, stream, total, rnd_data, 0.0, 1.0);
vslDeleteStream(&stream);
......
}
查看https://software.intel.com/sites/products/documentation/hpc/mkl/mklman/GUID-D7AD317E-34EC-4789-8027-01D0E194FAC1.htm, vdRngUniform
的const int
具有表示2^31个非负值的能力(在大多数现代平台上)。3*10^9比这个大,所以你很可能传递了一些负值给函数(即有符号整数溢出)。
相关文章:
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- 整数不会重复超过随机数
- 复制列表初始化的隐式转换的等级是多少
- while循环中while循环的时间复杂度是多少
- 如何检查一个c++字符串中有多少相同的字符/数字
- C++有多少类型的循环
- if数组上的随机数
- 求出有多少个数字是完美平方,而sqrt()是L,R范围内的素数
- 在将数字随机生成为数组期间从内存输出随机数的数组
- 在条件变量中触发错误信号的频率是多少
- 半随机数生成C++
- 函数的时间复杂度是多少?
- 程序在尝试猜测它选择的随机数时进入无限循环?
- 有没有办法在 c++ 中同时生成随机数?如果没有,是否有解决方法?
- 必须为 C++20 协程帧保留多少内存?
- 具有随机数的二维数组不会更改
- std::uniform_real_distribution使用了多少个随机数
- Intel MKL一次可以生成多少个随机数?似乎超出了某些限制
- 我应该使用多少个随机数生成器
- 在失去随机性之前,std::uniform_real_distribution可以生成多少个随机数