パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

「カルドセプトサーガ」にダイス目が偶数と奇数を繰り返すバグ」記事へのコメント

  • ハードウェアサポート (スコア:3, すばらしい洞察)

    by Anonymous Coward on 2006年12月06日 14時11分 (#1070447)
    いろんなハードウェアを相手にしないといけないPC用ソフトではなく、決まったハードウェア相手なのだから、逆にむしろ、乱数くらいハードウェアサポートにしてしまえばよかったのに。

    ゲームに乱数なんてつきものなんだから。
    • Re:ハードウェアサポート (スコア:2, おもしろおかしい)

      by Anonymous Coward on 2006年12月06日 14時25分 (#1070457)
      ハードウェアサポートと聞いて、付録にさいころがついてくるのを想像した。

      ゲームをしてると「さいころを振って出た数を入力してください」と要求される。
      「6面体さいころを12個振ってその合計値を入力してください」とか。
      「お手元のカードを一枚引いてください」でも可。

      個人で遊ぶゲームでズルをしてつまらなくするのはプレイヤーの勝手だし、
      複数で遊ぶ場合は目をごまかせばケンカになるだけだから相互抑止が働く。
      従って、ズルは意味をなさない。

      コンピュータゲームである必然性が皆無になる以外は、良いアイデアかもしれない。
      親コメント
    • by yohata (11299) on 2006年12月06日 14時22分 (#1070452)
      暗号・セキュリティが一般に浸透し始めた時代、Pentium4に付くような話がありましたな。
      アレってなんで立ち消えたんだっけ?

      #20年ぐらい昔、rand()の返値が「今のミリ秒」って恐ろしい物がありましたな。
      親コメント
      • Re:ハードウェアサポート (スコア:1, おもしろおかしい)

        by Anonymous Coward on 2006年12月06日 14時34分 (#1070465)
        > #20年ぐらい昔、rand()の返値が「今のミリ秒」って恐ろしい物がありましたな。

         そんなに恐ろしかったですか?
         実用的だったと思いますが。

         ハードウェア乱数発生器ってのをみて、Z80のRレジスタ思い出しましたよ。
         乱数レジスタと教えられて信じてました、純真だったな。
        親コメント
        • by Anonymous Coward on 2006年12月06日 14時51分 (#1070483)
          >> #20年ぐらい昔、rand()の返値が「今のミリ秒」って恐ろしい物がありましたな。

          >そんなに恐ろしかったですか?
          >実用的だったと思いますが。

          乱数を発生させるタイミングが周期的だったら、乱数にならないですよ。
          親コメント
          • 乱数というより、人の介入する時間(さいころ振り指示とか)はミリ秒単位だと制御しきれないので
            まぁそれでも良いかって感じですから、確かに純粋に乱数じゃないですね
            人の代わりにコンピューターが制御すればその値は予測出来るかな?

            まぁコンピュータつかってインチキしようと考える人の居なかったのどかな時代の方法ですね
            親コメント
            • 人が1回介入するごとに、必要とする乱数が1個と決まっているなら、それでもまあいいや、ということになると思います。が、人の介入1回でサイコロを複数振る場合、複数のサイコロには相関ができてしまいます。極端な場合、必ずぞろ目が出るとか。

              どちらにせよ、応用範囲が狭すぎて、とてもrand()の実装として使えたものではないと思います。
        • by Anonymous Coward on 2006年12月06日 22時35分 (#1070798)
          Z80のRレジスタはそのままでは乱数になりません。
          値の変化が命令実行数に依存するため、どうしても偏りが出ます。
          デバッグでプログラム中の命令数を修正すると偏りの分布も変わるので、乱数と信じてゲームに使用するとなぜかデバッグ作業がゲームのようになってしまいます。w

          Rレジスタの値は乱数と見なすのではなく、乱数の種か補正など補助的に使用するのがよいです。

          http://ja.wikipedia.org/wiki/Z80 [wikipedia.org]がRレジスタについて詳しくないので、ここに書いちゃいます。

          RレジスタはDRAMリフレッシュ時のRASアドレス生成用の7bitのカウンタです。
          Z80は各命令フェッチに続いてDRAMリフレッシュを行うメモリアクセスサイクルになっており、リフレッシュサイクルが必須なDRAMを他CPUより容易に接続することができました。

          Rレジスタがプログラム実行中に刻一刻と変化することから、その値はよく乱数発生プログラムの中で使用されました。(そのままでは乱数にならないのは上記の通り)

          その後の半導体の集積度向上により大容量化したDRAMのRASアドレス幅が8bit以上必要になり、またリフレッシュ時のRASアドレスをDRAM内部で自動生成するCAS before RASリフレッシュモードを備えるDRAMが一般的になったため、Rレジスタは本来のRASアドレスに使用されることはなくなりました。

          Z80互換CPUのHD64180ではリフレッシュコントローラを内蔵し、Rレジスタと無関係にDRAMリフレッシュを行うことができます。HD64180のRレジスタはZ80との互換性確保のためだけに設けられています。
          親コメント
        • > そんなに恐ろしかったですか?
          > 実用的だったと思いますが。

          大量に乱数が欲しいときに、ループで回すと同じ値ばかりになっちゃいますよ?
          「今のマイクロ秒」ならマシですが。
      • チップセットに付いてるような気がする。CPU内蔵の方が楽なんだけどね。

        >今のミリ秒
        pen4くらいで「今のクロックカウント」を疑似乱数に混ぜると結構いける気がする。
        親コメント
    • Pen4世代以降のインテルのチップセットなら
      ハードウェア乱数持ってたはず。技術資料をどっかで見かけたよ。
    • ゲームやシミュレーションで使う乱数の場合、様々な場面(例えばリプレイ)
      で再現性(同じシードを与えれば同じ乱数列が得られる性質)が必要となるので、
      どっちかといえばライブラリでまともな擬似乱数を用意しておいたほうが
      使いやすいと思います。

      #もちろん暗号で使う乱数の場合ハードウェアサポートの乱数が最良。
    • 乱数生成用のLSIって、実際にあるそうです。
      真面目なシミュレーションで、品質の非常にいい乱数をものすごく大量に必要とするような用途のためのものです。繰返し周期もものすごく長く、統計的な性質も入念に検定済み。でも、ゲームで使う乱数に、そんな立派なものを用意する必要があるかどうか・・・

Stay hungry, Stay foolish. -- Steven Paul Jobs

処理中...