パスワードを忘れた? アカウント作成
14253589 story
プログラミング

「じゃんけんゲーム」のロジックに対する意見の相違で兄弟げんか 246

ストーリー by nagazou
こうしていくさが始まる 部門より
はてなに子供二人がプログラムの方針で対立したという話が掲載され話題になってるらしい(はてな匿名ダイアリー[B! 増田] )。原因は「じゃんけんゲーム」の実装方針であるらしい。ゲーム内容は、画面でグー・チョキ・パーのいずれかを選びボタンを押すと、相手となるCPU側の手と勝敗が表示されるシンプルなもの。喧嘩の原因となった方針の違いを元記事を引用すると、

次男はまずCPUの「手」を乱数で決定し、画面に入力された「手」と比較して勝敗(と引き分け)を決める、素直な処理だった

長男はそれに飽きたのか、まずは乱数で「勝ち」「負け」「引き分け」を乱数で最初に決めてしまい、その後で結果に応じたCPUの「手」を決定するというロジックだった

そうだ。次男は長男の設定したロジックに納得がいかなかったらしく、「兄ちゃんのはじゃんけんで勝負してない」「勝ち負けを最初に決めてしまうなら意味がない」と批判、対して長男は「結果は同じなんだからこれで問題ない」と突っぱね、収拾が付かなくなったようだ。どちらが正しいかの議論は元ネタ自体のコメント欄にも飛び火している模様。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by Anonymous Coward on 2020年07月30日 19時05分 (#3861808)
    次男はシミュレーションゲーム向け。相手がチョキを出す確率2倍アイテムとかが実現しやすい。
    長男はシミュレーションでないゲーム向け。一定期間勝率2倍アイテムとかが実現しやすい。
    • Re:ゲーム性の違い (スコア:5, すばらしい洞察)

      by LARTH (14573) on 2020年07月30日 21時46分 (#3861936) 日記

      そもそも、長男の方は「後出しじゃんけん」という「じゃんけん」とは違う種類のゲームなんですが。

      親コメント
  • by NOBAX (21937) on 2020年07月30日 19時49分 (#3861849)
    乱数で「勝ち」「負け」「引き分け」を決めてしまうのではなく
    最初は乱数でも、人間側の手のパターンや反応速度、勝ち負けパターンを解析して
    人間が楽しめるようにすれば、いいゲームになる
    「引き分け」を連続すると人間は熱くなるだろうし
    最初、勝たせておいて、後から締め上げて焦せらせるとか
    楽しめる作り方はあると思う
  • 兄貴の方が融通は効きそう
    弟を説得できないのは説得力がないのか、
    あるいは弟が若すぎるのか

    ジャンケンを作るのが目的なら弟だろうし
    ゲームを作るのが目的なら兄の方なら
    「強いボス」とかも作りやすいから良さそうなもんだ

    いずれにせよ兄弟がこんなことで喧嘩できるって言うのは良いことな気がするわ

  • by kitune-san (48712) on 2020年07月30日 22時18分 (#3861952) 日記

    もうジャンケンで決めるしかないな

  • by Anonymous Coward on 2020年07月30日 18時40分 (#3861784)

    1対1だけでなく3人対決にしたり拡張するなら、次男の実装方法が良さそう

    • by Anonymous Coward

      まさにこれだと思う。
      仕様を意味も無く限定して、拡張性を考えないなら長男方式でも良いと思う。

      実務でも、客は喜ばないが、自分が面倒な事にならない様に、あえてそういう事やる人がたまに居ますよね。

      • by Anonymous Coward

        次男方式では難易度調整ができないので、ゲームとしての拡張性はないよ。
        長男方式なら手毎の勝率などを設定して敵の強さ調整と性格付けができる。次男方式では出す手の傾向しか調整できない。

        ただし、じゃんけんという手続きを正しく表現しているのは次男方式。

        べき論が強い次男はSIerには向いてない。(偏見)

    • by Anonymous Coward

      早すぎる最適化は諸悪の根源って奴やね
      ワイも1秒間に何万回もじゃんけんしてそこがボトルネックになってるんでもなけりゃ次男派やな

  • これ作り話ですよね?

    要は
    - 次男のプログラムは,CPUが出す手をランダムに選んでいる(プレーヤの勝率は考慮してない)
    - 長男のプログラムは,プレーヤーの勝ち負けをランダムに選んでいる(CPUが出すグーチョキパーの割合は考慮してない)
    という事だと思いますが,これは実装の違いじゃなくて設計(仕様)の違いだと思います

    そして設計(仕様)の話なのでどちらも正解,優劣は付けられません.

    (もしかすると頻度論とベイズ論に発展させたいのかもしれませんが)プログラムの実装なり設計として優劣をつけるなら,なんらかの追加情報(前提条件)が必須です.

    例えば,これが課金ゲームで課金しないとじゃんけん出来ない,より課金されるように乱数調整したい,そういう要求がある場合は長男の方が有利かと思います

    なぜなら長男方式なら,プレーヤの勝ち負けを決定する乱数を調整して,ABテストなどで課金額が多くなる乱数のパターンを探す,という方針で簡潔に実装できるからです.
    次男方式だとベイズの式(要は条件付き確率)を使って計算しないと,CPUが出す手の乱数のパターンを制御できません.ややこしい数式と実装が必要になり,実装コストが嵩みます.

  • by Anonymous Coward on 2020年07月30日 20時01分 (#3861860)

    相手の傾向を読んで、勝率を高めることが可能なスキルゲーム。
    現在の実装では、単なるランダムでしかないようだけれども、相手の分析の機能を組み込んで、真の意味で強いじゃんけんマシーンを作るなら、長男方式は無理があるし、他のじゃんけんマシーンと対戦させることもできない。

  • by Anonymous Coward on 2020年07月30日 20時04分 (#3861864)

    『統計はこうしてウソをつく』ジョエル・ベスト
    今コレ読んでる途中なんで、読み終わったらコメントするから!すごい奴を!

  • > 長男はそれに飽きたのか

    という点から、次男と同じものを作っても面白くないから、違うモノを作ってみたよ、というだけではないかと思う。
    もしくは、すでに次男と同じものは作成済みで、そのあとに作ったか。
    (元ネタからはこの辺りがはっきりと読み取れない。)

    であれば、そもそも「正しいかどうか」とかどうでもよくないか?
    「こんなこともできる・こんなやり方もある」的な「変な実装」だったんじゃないの?
    --
    にゃー。
  • 攻略の楽しみがあってこそゲームだ。

    なのでジャンケンをちゃんとしたゲームにするには,癖のあるキャラクターを出して,その癖を読み取って10回やって8割勝たないと次に進めない,とかやる必要がある。「最初は必ずグーをだして,同じ手は絶対続けて出さない」とか「グー:チョキ:パーを8:4:1の割合で出す」とかいう相手だ。

    次男の実装なら,手を決める乱数の部分を変えるだけで,そういうゲームに変えることができる。長男の実装では,戦略性のあるゲームにすることは絶対できない。

  • by Anonymous Coward on 2020年07月30日 18時31分 (#3861775)

    じゃんけんの判定をするものだったら次男方式だけど
    ゲームとして見るとプレイヤーを楽しませるために長男方式の実装を選んでもいいのでは?

    本当のランダムと、ユーザが体感するランダムの差、という問題もあるしさ

    • 「じゃんけん」ゲームは次男方式。
      長男方式はあくまでくじ引きであり、その演出として「じゃんけん」を利用しているだけ。

      コンセンサスがとれてないというか、言葉が通じてないレベル。

      親コメント
    • by Anonymous Coward

      ラスベガスと日本、って感じだな。
      日本のパチスロはスロット回転開始時には結果が確定済みだそうだから。

      …ラスベガスも乱数じゃないんだっけか?

    • by Anonymous Coward

      長男は合理化やチューンナップを求めるエンジニアのセンスがあると思う。

      ソースを読むなら次男のコードの方が理解が容易だろう。

  • by Anonymous Coward on 2020年07月30日 18時39分 (#3861782)

    相手がグーの後、グーを自分が出して勝つ確率:P(グー|グー)、
    前は問わず、グーを自分が出して勝つ確率:P(グー)、

    ベイズではP(グー|グー)≠P(グー)

    だけど長男のコーディングではP(グー|グー)=P(グー)になっている(はずだ)。
    なので長男と次男では統計に違いがでるはず…本当?

    #ベイズ統計の説明は聞くたびに「なるほどぉ!」と思うけど
    #思い返すと「あれなんでだっけ」になる、ア○AC

    • Re:ベイズ統計 (スコア:3, おもしろおかしい)

      by Anonymous Coward on 2020年07月30日 18時48分 (#3861793)

      > 違いがでるはず…本当?

      兄弟のプログラムを何度も対戦させて最後に勝ち越した方が方がお兄さん

      親コメント
  • by Anonymous Coward on 2020年07月30日 18時42分 (#3861786)

    楽天チェックも同じロジックだと思われます。
    最後に4枚のカードが全部開くと50ポイントのカードがあるので、1/4の確率で50ポイントが当たりそうですが
    いまだかつてあたった試しがありません

    • by Anonymous Coward on 2020年07月30日 23時03分 (#3861973)

      ペプシの「本田とじゃんけん」キャンペーンもこの方式で、本田の勝率が凄いことになってたな

      親コメント
    • by Anonymous Coward

      本当に4分の1の確率で配ったら損してしまうから、当たる確率が高いように見えて裏で低めの当選確率が設定されているパターンでしょう。
      そうじゃないと本田じゃんけん強すぎ。

      • Re:楽天チェック (スコア:2, すばらしい洞察)

        by Anonymous Coward on 2020年07月30日 19時06分 (#3861811)

        ああいうオンライン抽選(インスタントウィン)は予め勝率が決まってるし、何だったら時間で勝率調整するんだよ。

        例:
        開始直後→勝率を高くして客寄せ
        中盤→予定賞品数がなくならないように低くして調整
        終盤→予定賞品数で着地するように調整(出が悪いなら高くしてPR、出がいいなら低くする)、無くなったら0%で終了

        親コメント
      • by Anonymous Coward

        どこかに「1等50ptの取得確率は均等(1/4)ではありません」って注意書き入ってないとまずそうだけど。
        実質無償でpt配ってるのサービスだから良いのか…?

        参考)『ドラクエモンスターズ スーパーライト』で上級品の金の地図の出現率が高いように誤認?させた例(2014)
        https://news.yahoo.co.jp/byline/shinoharashuji/20140206-00032403/ [yahoo.co.jp]

  • by Anonymous Coward on 2020年07月30日 18時48分 (#3861794)

    次男:やや融通の利かない標準範囲のプログラマ

    長男:ソシャゲガチャ作成に適正大ありだが生まれるのが遅すぎた

    # どっちもがんかれ

  • by Anonymous Coward on 2020年07月30日 18時57分 (#3861800)

    あのメダルゲームの正式名称が「ジャンケンマン」だということを知った。
    https://ja.wikipedia.org/wiki/%E3%82%B8%E3%83%A3%E3%83%B3%E3%82%B1%E3%... [wikipedia.org]
    https://dic.nicovideo.jp/a/%E3%82%B8%E3%83%A3%E3%83%B3%E3%82%B1%E3%83%... [nicovideo.jp]

typodupeerror

ソースを見ろ -- ある4桁UID

読み込み中...