Numerical Recipes

数値演算プログラムの名著ですね。やや古い感じもしますけどプログラムで数値計算をやろうと思うなら一読する価値はあるでしょう。最近、自作の乱数クラスに分布関数を装備させようと思ってちょくちょく見ています。
一様乱数から分布関数通りの乱数を発生させるには、原理的には分布関数の原始関数の逆関数に0〜1の一様乱数を入れれば出てくるわけです。ですが、まず分布関数が解析的に積分可能とは限らない(というか出来るほうが稀)。次にそれを逆関数に直せる保障は全くない。実際、有名どころの分布関数も殆どが解析的な方法は不可能なようです。ガウス分布くらいでしょうか?可能なのは。
一般的な方法としてはモンテカルロ的にする方法があるみたいです。というか、私、自分で大発見したと思ったのですが、しっかり載っていました・・・しかももっとスマートな方法が・・・。まあ素人の発見なんてそんなものでしょうね。しかしこの方法も欠点があって、区間が∞の場合は使えないのです。モンテカルロですし。そうでなくとも区間が広いと応答が遅い場合があるのでやはりそううまくはいかないようです。
ところで、Numerical Recipesですが、現在ではWeb公開されています。英語ですけどね。
http://www.library.cornell.edu/nr/
ただし注意として、計算原理などを読む分にはいいけれどもサンプルのプログラムはあまり参考にしないこと。もちろん間違ったことは書いていないけれどもプログラムとしては非常に汚いです。プログラムはプログラムでもっと別な場所で勉強しましょう。