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

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

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

    by Anonymous Coward
    いろんなハードウェアを相手にしないといけないPC用ソフトではなく、決まったハードウェア相手なのだから、逆にむしろ、乱数くらいハードウェアサポートにしてしまえばよかったのに。

    ゲームに乱数なんてつきものなんだから。
    • 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くらいで「今のクロックカウント」を疑似乱数に混ぜると結構いける気がする。
        親コメント

あと、僕は馬鹿なことをするのは嫌いですよ (わざとやるとき以外は)。-- Larry Wall

処理中...