TL;DR: ガンマ分布に従う乱数生成器を Java で実装し、Commons Math の実装と比較して 最大で約 16 倍 (任意の形状パラメータの乱数を生成する場合) の速度効率を達成しましたよ、というお話です。 (Header image: Mundhenk at en.wikipedia) ガンマ分布に従う乱数生成の実装方法 これまで 正規分布に従う乱数生成、指数分布に従う乱数生成 をそれぞれ Java で実装してきましたが、今回はガンマ分布に従う乱数生成を Java で実装してみます。 ガンマ分布 は、形状パラメータ $k > 0$ と スケールパラメータ $\theta > 0$ (もしくは形状パラメータ $\alpha = k$ と比率パラメータ $\beta = 1 / \theta$) の 2 つのパラメータを持ち、その確率密度関数は次の式で表されます。 \[f(x)
![Java で最速の乱数生成器を目指す: (3) ガンマ分布に従う乱数](https://cdn-ak-scissors.b.st-hatena.com/image/square/d76acce21b89957f2eb26dda1ad48d8533b8850c/height=288;version=1;width=512/https%3A%2F%2Fk11i.biz%2Fimages%2F2017%2F01%2F16%2FGamma-PDF-3D.png)