タグ

関連タグで絞り込む (0)

  • 関連タグはありません

タグの絞り込みを解除

PythonとRandomとProgrammingに関するagwのブックマーク (3)

  • 乱数生成が遅いのはモジュールだから仕方ないっぽい - bonlife

    京都の嵐山でお花見してきたbonlifeです。ベラシとその仲間たちよ、ありがとう! さてさて、話は急に変わりまして。モンティホール問題(ジレンマ)について扱ったこの日記を見ていたら、RubyPHPに比べてPythonが異常に遅いと指摘されていたので、ちょっと調べてみました。RubyPHPでは乱数を生成するrand()が組み込みなのに対して、Pythonでは標準モジュールでの提供なので、まぁ仕方ないんだろうな、と思いつつ調査。 >>> import random >>> import profile >>> def random_generate(num): for i in range(num): random.randint(1,3) >>> >>> >>> profile.run('random_generate(100000)') 300005 function calls in

    乱数生成が遅いのはモジュールだから仕方ないっぽい - bonlife
  • Randomクラスは遅い!? – 日曜研究室

    なんとなく関数よりクラス使った方がかっこいいよねということで、 random.randint(0, 10) とかって書けばいいところを r = random.Random() r.randint(0, 10) とかって書いちゃう場合ってあると思いますけど、上の書き方と下の書き方は等価ではないです。 とりあえずランダムな値が得られればいいやってな文脈では結果は同じと言えるんですが、クラスをインスタンス化する場合__init__の中でseedが呼ばれます。 でこのseedは、処理自体(引数ありでseedを呼んだ場合)が重いうえに、seedの元になる値を選ぶ処理(引数なしでseedを呼んだ場合)が加わるとさらに重いです。 プロファイラで調べたところ、うちの環境では、関数だけの場合と、引数なしインスタンス化+メソッドの場合では後者の方が5倍くらい遅いです。 引数有りインスタンス化+メソッドの場合で

  • 乱数生成アルゴリズム Xorshift を random.Random のサブクラスとして実装してみた - 銀月の符号

    すごい乱数生成アルゴリズム「xorshift」 - Pashango’s Blog の Python 最高!! につられて。 random.Random を継承する形で Xorshift アルゴリズムを。なぜつくったのかまったくの謎だけど Python 最高!! だからしかたない。 メルセンヌ・ツイスタ (Mersenne Twister) のほうが高品質なので、出番はたぶんない。ホントなぜつくった、オレ? random.Random のサブクラスにすると randint や choice などのメソッドを動かすことができるのがメリット。 Python 版 まずは Pure Python で。 核となる乱数生成部は _genrand_int32 メソッド。名前の通り xor とシフト演算しかないのと、状況保持が unsinged long 4 つだけでできるのが特徴。論文にあったオリジナル

    乱数生成アルゴリズム Xorshift を random.Random のサブクラスとして実装してみた - 銀月の符号
  • 1