匿名ダイアリー:じゃんけんゲームの実装法
https://anond.hatelabo.jp/20200727185858
画面でグーチョキパーのいずれかを選びボタンを押すと、相手(CPU)の「手」と勝敗が表示されるというものだった
次男はまずCPUの「手」を乱数で決定し、画面に入力された「手」と比較して勝敗(と引き分け)を決める、素直な処理だった
長男はそれに飽きたのか、まずは乱数で「勝ち」「負け」「引き分け」を乱数で最初に決めてしまい、その後で結果に応じたCPUの「手」を決定するというロジックだった
長男のやりかたは,基本的に「あとだし」という時点で非常に印象が悪い。はてぶでも指摘されてるけれど,イカサマ賭博ゲームでも作るやりかただ.
仮に人間側の勝つ平均確率が長期的には保証されていたとしても,個々の勝敗は完全にコンピューター側だけで決定される.人間側の意志決定が勝敗に影響しない.プログラム側で自由に確率を操作できる.
プレイヤー側の立場から見た場合,ネット上のポーカーやスロットのゲームには疑わしい点が多々ある.現実に行われたフットボールの試合であれば,勝者と敗者を誰もが簡単に判別できる.ところが,オンライン・ゲームでは,誰にどのカードが「配られた」のかは,胴元のギャンブル会社にしか分からないのだ.
仮に「5回連続して勝ったら景品が貰える」じゃんけんゲームがあったとして,個々のジャンケンにおいて人間が勝つ「平均確率」が1/2でも,4回連続で勝った人間の5回目の勝率を0%操作するのはコンピューターゲームなら簡単だ.
それにくわえて疑似乱数の問題がある.
- 「あなたの使っている乱数、大丈夫? -危ない標準乱数と、メルセンヌ・ツイスター開発秘話」 http://www.math.sci.hiroshima-u.ac.jp/~m-mat/TEACH/ichimura-sho-koen.pdf
- 「インテル® DRNG (Digital Random Number Generator) ソフトウェア実装ガイド」http://www.isus.jp/security/drng-guide/
- 電子政府情報セキュリティ技術開発事業「擬似乱数検証ツールの調査開発 調査報告書」 https://www.ipa.go.jp/files/000013665.pdf
使っているのが本物の乱数でない以上は,こういう使い方をすると真のランダムなジャンケンとの乖離が大きくなる.たとえば10回続けては「あいこ」が出ないかもしれない.仮に5回続けて「あいこ」が出たとしても,その次に「あいこ」になる確率はおそらく「1/3」にはならないだろう.十分に長い間試行をくり返せば,ジャンケンゲームとしての不自然さが露呈することになる.*1
制作者側は,「ゲームの公平性を保つために配布されるカードなどは完全な乱数によって制御している」と主張しているが,実はこの「完全な乱数」を実現するプログラムを作るのはきわめて難しいのだ.「どうやって乱数を出しているんだ?」
あるときバーレットはダレンにそう尋ねたが,明確な答えは返ってこなかった.ともあれ一つ確実に言えるのは,ギャンブル会社がその気になれば,特定のプレイヤーに配る手札を強い手に差し替えてしまうようなことも十分に可能だと言うことである.
暗号学を少しかじった経験から、乱数の質も重要な前提だろうなという印象を持った。https://t.co/qEVe7yDAxC
— suiheilibe (@Antouchable) July 28, 2020
また確率1/3というけれど,それが本当に1/3なのかどうかは時間をかけて検証しなければ作った本人にもわからない.もし1/3からの偏りが生じていれば,それはイカサマでちょっとした不祥事だ.過去に疑似乱数を間違って使ったために,問題になったこともある.
- http://javablack.hatenablog.com/entry/20170220/p1
- https://megalodon.jp/2017-0220-2333-50/www.toto-dream.com/press/20170220.html
- https://business.nikkei.com/atcl/report/16/030300120/030300002/?P=1
さらにバグで「明らかにおかしい」動作をするサイコロで有名になったクソゲーも存在するという.
問題となっていたのは、ゲームの基盤となる双六ボードで、サイコロの目が偶数プレイヤーは偶数、奇数プレイヤーは奇数に偏るなど、ゲーム進行に影響を及ぼす点。 発売日からこうした問題点を検証した結果、影響を及ぼす問題点は20件以上確認された。
https://japan.cnet.com/article/20338943/「ランダム性の低いダイス」
特に特徴的なのがダイス(サイコロ)のランダム性。
通常、ダイスを振ったら全ての目が均等な確率で出るはずだが、本作のダイスは「偶数」と「奇数」を規則正しく交互に出すという、あまりに偏った出来。このせいで、「サイコロすらまともに作れていないゲーム」という不名誉極まりない称号を賜っている。後年二五賽クソゲーが販売されるまでは、この称号は本作を指して用いられることが多かった。
https://w.atwiki.jp/gcmatome/pages/2574.html#id_2c10b749わざわざXBOX360専用で開発、過去の実績、猿楽庁等の要素から考えてクソゲーであるはずが無く、またこのスレで名前が挙がるとは誰もが夢にも思ってなかったであろうソフトだった。
このソフトを二文字で表すなら「バグ」である。
最初は熱心なファンがバグがあることは感じながらも懸命に楽しもうとしていたが、日に日に発見されるバグの数と反比例して姿を消していった。そんな状況の中でも沈黙を守り続けるバンナムの姿に怒りで震える購入者の声は届かず、真っ先に謝罪したのがハード会社のマイクロソフト、というなんともやるせない惨状に、現代の歪んだ社旗情勢が反映されていると言えるであろう。
https://koty.wiki/2006GC
開発者がmixi内で、本人かどうかの確証も無いが、「アレがサービスの最底辺」と発言しており、もはやダイスすらまともに作れていなかった事などほんの瑣末な事と言える。
- サイコロの挙動にも問題があり、最初の3つ転がっている時はいいが、1個目2個目と出目が確定すると、本当にそれで固定されてしまう。
- まだ回っている3つ目が先の2つにぶつかっても、先の2つの出目は変動しない。
https://w.atwiki.jp/gcmatome/pages/2887.html#id_2c10b749
- サイコロ自体にも問題があり、「1,3,4,6」の出る確率がそれぞれ1/8、「2,5」の出る確率が2/8になっている。
- なにせ確率が倍も違うので、データを取ってみるまでもなく体感として明らかに出目が偏っている。
- あくまで推測しかできないが、8種類*2の乱数に1~6までの数を割り当てる際、余った2つに2と5の出目を入れてしまったことからこうなったものと思われる。
- 正確には、8つの乱数を6つに当てはめるために「6」を8分割して「0.75|1.5|2.25|3|3.75|4.5|5.25|6」の8つに分け、それぞれの小数点以下第一位を四捨五入することで1~6までの数を8つで表現した、という説が有力である。この説であれば、2と5という半端な数が高い確率であることに説明が付く。
- サイコロの出目を乱数で再現するプログラムというものは、工業高校の情報系学科であれば1~2年生で学ぶような基本中の基本の処理である。
いくら低価格ソフトとは言え、一般企業に勤めるプログラマーがこのような初歩的なミスを犯している事には驚きを禁じえない。
- 同じくサイコロのプログラムも作れなかったゲームとして『カルドセプト サーガ』(後にパッチで修正された)があるが、ミスの稚拙さではこちらの方が数段勝る。
しかし、本作はわざわざゲーム機を使いながら、内容は本来のチンチロリンの再現すらできていないという画期的な出来栄えであった。
https://handy.koty.wiki/2011GC
(中略)
また、サイコロの出目の挙動を不審に思った有志の検証により、サイコロの2と5が出る確率は2/8、他の目(1346)が出る確率は1/8であるという事実が明らかになり、チンチロリン賭博が登場する某漫画の「四五六賽」にあやかって「二五賽」と名付けられスレ住人に好評を博した。
単純なサイコロの乱数すらまともに作れていない本作には驚きを禁じ得ない。
ここまで明らかにヒドイと普通にプレイしていても気づくので「クソゲー」になるが,もっと微妙に確率操作していた場合は「詐欺」と言われるだろう.
「人気ゲーム機の「景品くじ」、露店で大量購入も当たらず…法的にどんな問題がある?」
「仮に、『当たりくじ』が存在しないため、景品を渡すような事態が起こりえないことを知りながら、店先に景品を展示し、さも『当たりくじ』が出ればその表示にしたがって、景品を進呈するかのように装い、くじ(空くじ・ハズレ)を販売していた場合、刑法上、詐欺罪(刑法246条1項)にあたります。法定刑は『10年以下の懲役』です。
こうした商売は、祭りを仕切る『反社会的勢力』との関係も指摘されています。露店のくじの販売が、団体の活動として、組織的におこなわれた詐欺に該当する場合というのは、にわかには想定しがたいのですが、この場合、組織犯罪処罰法の組織的詐欺に格上げされます。法定刑は、『1年以上の有期懲役』と重くなります」
足立弁護士はこのように述べる。民法の観点からはどうだろうか。
「民法の観点から検討すると、『当たりくじ』があるものと誤信して、くじを購入したところ、空くじしか入っていなかったということであれば、客は、錯誤無効(民法95条)を主張して、全額の返金を求めることができます」
https://www.bengo4.com/c_23/n_5931/
それにしてもなつかしい.
「こんにちはマイコン」あたりに書いてありそうな奴だよ.あの頃はもちろん言語はBASICだった.
https://b.hatena.ne.jp/entry/s/anond.hatelabo.jp/20200727185858
- id:Lhankor_Mhy 疑似乱数なので、次男実装であってもCOMの手は事前に決定している、と言えなくもないな。/ あれってシード値の変更ってどのタイミングでしてるんだろ。ブラウザ実装依存なんだろうけど。
この話で,疑似乱数に言及してる人が少ないのがビックリだよ.
昔のゲーセンにあった例のゲームの話をするのも「勝率が異常に低いのでは?」という疑惑があったからだろう.十分に検証してみれば不正があれば発見できる.
- id:srng これは運ゲーでは常に付きまとう話。ポーカーマシンのナチュラルディールか否かみたいな。本場カジノではそれ絡みの規制もある。例のじゃんけんマシンもそうだけど、賭け事禁止の日本人はこの件甘く見る人が多い
- id:proverb これってそのままガチャやパチスロの確率制御に繋がりそうな問題だね。利用者にとっては区別できないが、長男方式だとゲーム製作者側の都合で確率制御できる。倫理的にそれが許されるかどうか。
- id:bongkura 兄を称賛するのはよく分からんし、弟を注意するとか最高に意味不明。汚い真似すんなは十分合理的でないの。胴元に確立操作される事に疑問を感じないってことか
- id:aya_momo スロットマシーンと似ている。まず役を決めて、そうなるように回転を止める。/有名人が来ると当たる確率を上げるという話も聞いたな。
- id:AKIMOTO 麻雀ゲームの敵の手、ランダムな捨て牌しておいて適当な順目でロンさせ、そっから出てない牌組み合わせて上がりを作るというのを聞いたことある
麻雀ゲームくらいになるとなー.思考ロジックは複雑すぎるし,ランダム要素も多すぎるし,勝率計算し難いし.どうせ相手の手は見えないから,そのくらいでもそれっぽくなる気はする.
- id:puruhime 次男氏は対戦の実装、長男氏はガチャの実装をすれば丸く収まるよ
- id:zeromoon0 兄の発想がパチスロとかガチャで笑った。いっそ「わざと負けるゲーム」を作ったほうが喧嘩がなくていいかも。
- id:shikiarai 弟の言う通り、兄のものはじゃんけんの皮を被ったガチャ。要件はじゃんけんである。スケーラビリティを考えた場合、じゃんけんのままスケールするのであれば弟に分がある。本田さんとのじゃんけんなら兄の実装に
- id:houyhnhm 乱数のバグり方によっては結果は違ったりする/昔のアレは、配牌仕込みがあって、満貫以上で上がると発動するので手を崩すテクニックとかあったんだよなあ。あと、鳴きでツモずらすとか
- id:koyancya オンラインカジノがどっちの方式で実装されてるか気になります!
人間側の勝率を恣意的に制御して,射幸心を煽るのに最適.
違法賭博のつくりかた.
- id:barm 俺なら「お前らの使ってる乱数は本当に一様にランダムなのか?」と煽って新たな争いを勃発させるね。
争いも何も,プログラマなら疑似乱数が真の乱数でないのは常識.さすがに子供達にその知識を求めるのは厳しいけど.
- id:nmcli 兄の発想は好きだが、コードが流出したり不具合があったりしたときのリスクが大きい今、わざわざ採用する必要はないと考える。
たしかにな.やはり確率操作は「ずるい」としか思われないし,それを知られるのは不祥事だ.
- id:ROYGB プレイヤーやCPUを増やして3人以上での対戦を可能にするにはどうするかで考えれば解決するかも。
コンピューターがプレイするの「サクラ」を混ぜておくという手もチラホラ.
「5人プレイ」で,3人までをランダムに決定し,人間の手と合わせてコンピューター側が必ず「勝ち」又は「あいこ」になるように最期の一人の手を決めることは造作もない.
オンライン上でポーカーをプレイする際によく囁かれるのが,「同じテーブルに座っている客が本物の客ではなく,自動プログラムで制御されたロボット(機械)なのではないか」という噂だ.つまり胴元が確実に収益を上げるために生身の人間がどうあがいても勝てないようにプログラムされたロボットや,場の盛り上げを演出するためのロボットが一般プレイヤーの中に混じっていると言うことだ.
大手ポーカーサイトの中には,ロボットを使ってテーブルにさも客が集まっているように見せかけ,収益を上げているサイトもあるという.
【ノーブランド品】10個 アクリル製 不透明 八色選ぶ 20 面 サイコロ パーティー プレー - 青
- メディア: おもちゃ&ホビー
第3章 乱数
https://asciidwango.jp/post/122327922390/the-art-of-computer-programming-volume-2
3.1. はじめに
3.2. 一様乱数の生成
3.3. 統計的検定
3.4. そのほかの型の乱数量
3.5. ランダムな数列とは何か?
3.6. まとめ
*1:次男の側にもそれなりの問題は残るけど,人間側の行動がランダム要素として追加される分だけ,兄のそれより問題は少なくなる.