0

我想在 .cu 格式文件中使用 drand48 获得随机统一数,为什么我总是给我 3.90799e-14 这个值

我的代码在 ran_uniform_test.cu

#include <iostream>
int main( int argc, char** argv) 
{ 
    std::cout<<drand48()<<"\n"; 
    return 0;
}
4

1 回答 1

1

您应该在使用之前调用srand48(或seed48,或) :lcong48drand48

srand48()、seed48() 和 lcong48() 是初始化入口点,其中一个应在调用 drand48()、lrand48() 或 mrand48() 之前调用。(虽然不建议这样做,但如果在没有事先调用初始化入口点的情况下调用 drand48()、lrand48() 或 mrand48(),则会自动提供常量默认初始化值。) erand48()、nrand48() 和jrand48() 函数不需要首先调用初始化入口点。

像这样使用:

#include <iostream>
#include <ctime>
#include <cstdlib>

int main(int argc, char *argv[])
{
    // A common random seed strategy is to use the current time
    srand48(time(NULL));

    std::cout << drand48() << std::endl;
    std::cout << drand48() << std::endl;
    std::cout << drand48() << std::endl;
    std::cout << drand48() << std::endl;

    return 0;
}
于 2012-07-19T19:17:03.473 回答