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()のいずれかが呼び出される前にそのうちの1つを呼び出す必要があります。(推奨される方法ではありませんが、初期化エントリポイントを事前に呼び出さずに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 に答える