Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

タグ

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

  • 乱数生成が遅いのはモジュールだから仕方ないっぽい - 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 のサブクラスとして実装してみた - 銀月の符号
  • すごい乱数生成アルゴリズム「xorshift」 - Pashango’s Blog

    みなさん、こんにちは、今回は乱数の話です。 特に複数機種でのコンシューマ機でゲームを開発をしていると、機種間で乱数値を統一するために乱数生成アルゴリズムを自作しますよね。 そこでよく使われるアルゴリズムが「線形合同法」です、内容は至って簡単で、以下の漸化式を使います。 A,B,Mは定数で、どの値が入るかは処理系依存です。 例えばUnixなどの処理系ではA=1103515245,B=12345,M=2147483647などが入ります。 C言語ですと以下のようになります。 static unsigned int x=1; void srand(unsigned int s) { x=s; } unsigned int rand() { x=x*1103515245UL+12345UL; return x&2147483647UL; } この「線形合同法」は計算が簡単で高速ですから、いろいろな環

    すごい乱数生成アルゴリズム「xorshift」 - Pashango’s Blog
  • 1