C++ では、ランダムな浮動小数点数を取得したいと考えています。私が覚えていることから、典型的な乱数生成は次のように行われます。
rand() % 100 
これにより、0から99までの値が得られます
- 私が欲しいのは
rand() % PI / 12 
解釈は、0 と PI/12 の間のランダムな角度です。
前もって感謝します!
C++ では、ランダムな浮動小数点数を取得したいと考えています。私が覚えていることから、典型的な乱数生成は次のように行われます。
rand() % 100 
これにより、0から99までの値が得られます
rand() % PI / 12解釈は、0 と PI/12 の間のランダムな角度です。
前もって感謝します!
C++11<random>ソリューションを使用すると、次のようになります。
#include <random>
#include <iostream>
int main()
{
    const int length = 60;
    std::random_device rd;
    std::mt19937_64 mt(rd());
    std::uniform_real_distribution<double> distribution(0, M_PI/12);
    for(int i = 0; i < length; i++)
    {
        double d = distribution(mt);
    std::cout << "d = " << d << std::endl;
    }
}
    あなたがしたいことは次のようなものです:
double RealRand (double up_to)
{
    return double(rand()) / RAND_MAX * up_to;
}
事実上、これが行うことは、最初に 0 から 1 (左端を含む) の間の乱数を生成し、次にその数を [0.. up_to] にスケーリングすることです。(注: ご存じない場合のために、rand()関数は 0 から の間のランダムな整数を生成しRAND_MAXます。)
ただし、これを実行したくない理由が (少なくとも) 2 つあります。まず、rand()通常、乱数ジェネレーターは不適切です。次に、一部のプラットフォーム (Visual C++ など)RAND_MAXでは、非常に小さい数値 (32767 など) であり、生成された実数値の解像度が非常に低くなります。
<random>ヘッダー (新しい C++) で機能を使用することを強くお勧めします。