タグ

ブックマーク / pashango-p.hatenadiary.org (4)

  • pyevolveによる遺伝的アルゴリズム(3) - Pashango’s Blog

    pyevolveによる遺伝的アルゴリズム(1) pyevolveによる遺伝的アルゴリズム(2) 今回はGAで「巡回セールスマン問題」を解いてみます。 「matplotlib」のインタラクティブモードを使い、巡回経路がリアルタイムで変化するようにしました、経路がウネウネと最適化されていく姿を見てるだけでも面白いです。 実行には「numpy」「pyevolve」「matplotlib」の3つのライブラリが必要です、以下のサイトからダウンロードしてください。 http://numpy.scipy.org/ http://pyevolve.sourceforge.net/ http://matplotlib.sourceforge.net/ 拠点数、世代数、標数、突然変異確率をいじると、答えの導き方が変わってくるので、いろいろいじるのも楽しいです。 色々な経路を解いていると解ってくるのですが、拠

    pyevolveによる遺伝的アルゴリズム(3) - Pashango’s Blog
  • RSA暗号で「ふっかつのじゅもん」を作る(1) - Pashango’s Blog

    オッス、オラ、トンヌラ! 前回は、高速素数判定を作りましたが、今回はRSA暗号を使って、昔懐かしの「ふっかつのじゅもん」を作ってみましょう。 Pythonを使って高速素数判定をしてみる - Pashango’s Blog あ、「今さらRSAかよ」と思いました? 自分でRSAを実装してみると、色々知らない事が出てきて面白いですよ。 あとRSAは、暗号化以外にも応用が利くんで覚えておいて損はしませんよ。 RSA暗号とはなにか? ゲームプログラマは基的にゲームばっかやってるんで、一般的な情報処理知識に欠けている場合がほとんどです。 まずはRSA暗号の説明から始めましょう。 RSA暗号とは、2つの鍵「公開鍵」と「秘密鍵」を使う暗号方式です。 「公開鍵」は暗号化キーです、みんなに公開してかまいません。 「秘密鍵」は復号化キーです、みんなにバレてはいけません厳重に保管してください、間違ってもネット上

    RSA暗号で「ふっかつのじゅもん」を作る(1) - Pashango’s Blog
  • すごい乱数生成アルゴリズム「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
  • Pythonを使って高速素数判定をしてみる - Pashango’s Blog

    みなさん、素数を数えてますか? 『素数』は1と自分の数でしか割ることのできない孤独な数字。 暗号化できたり、乱数を作れたり、心を落ち着いたりして、私達に勇気を与えてくれます。 素数といえば「エラトステネスのふるい」ですが、あれは大きい桁の素数を生成しようとすると、とんでもなく時間が掛ります。 今回は、どんな大きな桁の素数でも高速で素数判定するプログラムを作ってみます。 基は「フェルマーの小定理」 素数判定の基は「フェルマーの小定理」です、数式は1行だけのごく簡単なものです。 a^(p-1) mod p の答えが1以外ならpは合成数である ただし、aとpが素の関係(最大公約数が1)であること 2つの数を「べき剰余算」して答えが1以外なら合成数(not 素数)という事です。 aに2を代入してqが素数なら答えが1になる、たったこれだけです簡単でしょ? def is_prime(q): q =

    Pythonを使って高速素数判定をしてみる - Pashango’s Blog
  • 1