【问题标题】:curand, thrust::randomcurand,推力::随机
【发布时间】:2012-07-20 03:17:03
【问题描述】:

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

我的代码在 ran_uniform_test.cu 中

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

【问题讨论】:

  • 你没有播种随机数
  • 怎么样?你能给我一些提示吗,我只是在其他代码中这样使用它,它工作,但它不这样工作

标签: c++ cuda


【解决方案1】:

在使用drand48之前,您应该致电srand48(或seed48,或lcong48):

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;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多