ANSI rand()関数のみを使用して、任意の確率分布で疑似乱数浮動小数点数を生成する簡単なアルゴリズムを探しています。単純な一様分布の場合、次のコードを使用します。
x = (float)rand() / (float)RAND_MAX;
もちろん、それはあまり正確ではありませんが、私のニーズには十分です。ロジスティックやガウス分布のような他の分布も必要です。理想的には、有限長の単純なベクトルを使用して任意のpdfを定義する必要があります。たとえば、ロジスティックpdfの場合、このベクトルは次のようになります。
logistic_pdf = {0., 0.26894, 0.33924, 0.41742, 0.5, 0.58257, 0.66075, 1.};
均一の場合(同じ次元8を使用):
uniform_pdf = {0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125};
これは単なるアイデアです。しかし、それを効率的に実装する方法がわかりませんrand()->{0...RAND_MAX}
。