日本語でそう書いてありますね。親しみのある名前ではありません)なので、被復元抽出を効率的に実装する方法について検討が必要ですが、それはちょっと自明ではありません。mrknさんのMath/Random構想を考慮して欲しいです。あちらで提供される分布実装と整合性を持つ仕様であって欲しいです。話を広げると、連続分布の話が出てきますね。離散分布だけでいいんですが。話はさらに変わってくるでしょう。ago=begin遠藤です。redmine@ruby-lang.org:「重みを変えずに繰り返し抽選したい」というユースケースで有利になるんですが、汎用性に欠けますかね。ありそうだと思うんですが。ほとんどの場合は一回の呼び出しで大量の抽出を行うことで代替可能ではないでしょうか。最初に大量抽出でプールしておいて、ちょっとずつ消費し、無くなったらまた大量抽出してプールする、というデバッグが面倒なコードをユーザに書かせることになるのはよくないと思います。繰り返しになりますが、二分探索は最適なアルゴリズムではない(簡便性を犠牲にする割に半端にしか速くならない)というのも重要な点で、高速な細切れ抽出を本当に求めるのであれば、以下のサイトのコードのように専用のクラスを用意するのが適切だと思います。http://code.activestate.com/recipes/576564-walkers-alias-method-for-random-objects-with-diffe/しかしながら、これは組み込みライブラリでサポートすべき範疇ではないでしょう。確かに組み込みにするには大掛かりすぎると思います。必要である以上、組み込みにするのが不適切なのではないかという気もします。おみくじ専用なので本気で使わないでください」とかアホなこと言いたくないですし、本気で使うときは自力で書き直すのが定番になるのも嬉しくないです。