タグ

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

  • すごい乱数生成アルゴリズム「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
    tks_period
    tks_period 2009/08/04
    ゲームじゃないからMTでいいもん!   知らなんだ。乱数は面白いよなぁ。能力が付いていかんけど…
  • PythonでA*(A-Star)アルゴリズム - Pashango’s Blog

    今回はA*アルゴリズムをPythonでやってみます。 ゲームプログラマの間では、もはや常識となりつつある最短経路問題解決アルゴリズムです。 A*は、古典的手法である「ダイクストラ法」を改良したものです。 スタート地点からノードnを通ってゴールに辿り付くとき、最短距離をf(n)とすると、 f(n) = g(n) + h(n) とすることができます、g(n)は「スタートからノードnまでの最短距離」、h(n)は「ノードnからゴールまでの最短距離」です。 でも、最初から適切なg(n)とh(n)が判ってるなら苦労しませんよね。 だから、テキトーな予測値を使って、最短経路をある程度予測して効率的に経路探索をしてみようという事です。 テキトーな予測値を使った最短経路距離をf*(n)とすると f*(n) = g*(n) + h*(n) となります、f*(n)を求めるためにテキトーなg*(n)とh*(n)を

    PythonでA*(A-Star)アルゴリズム - Pashango’s Blog
  • はてな民に確率の問題を出してみよう - Pashango’s Blog

    こんにちは、今回は確率の話です。 以前、職場で余興として問題を出したのですが、ほぼ全員がこの問題を知りませんでした。 理系が多く集まる職場なので、意外にみんな知らないんだなぁと思ったのですが、今度はリテラシーの高い(と勝手に思っている)はてな民に問題を出したら、どうなるんだろうと純粋な好奇心が沸いてきました。 なお有名な問題ですので、答えを知っている方はあまりヒントを出さない方向で・・・ 問1 ティムはテレビのクイズ番組に出演し見事優勝をはたしました、優勝賞品の自動車をゲットするチャンスを得たのです。 司会者は言いました。 「ここにA、B、Cの3つのドアがあります。 1つのドアの後ろには自動車、それ以外の2つのドアの後ろにはヤギがいます。 ティムは1つのドアを選び、そのドアの中に自動車が入っていれば賞品をゲットできます。 もし、ヤギが入っていた場合はハズレです。 さぁティム、どのドアを選び

    はてな民に確率の問題を出してみよう - Pashango’s Blog
    tks_period
    tks_period 2009/08/03
    Q1は知ってるので良いとして、Q2は計算してみて少し驚いた。再試行の確率が影響するのか、なるほどなぁ。
  • 1