作者yauhh (喲)
看板C_and_CPP
標題Re: [問題] 關於 xa xb 的猜數字遊戲AI
時間Sat Jun 18 00:24:09 2011
※ 引述《cses (5858)》之銘言:
: 其實是最近老師開了這個題目給我們
: 要我們寫出一個簡單的AI來讓電腦跟我們玩 幾A幾B的猜數字遊戲
: 就是...我們自訂一組數字,而電腦就是隨機產生一組亂數來問我們幾A幾B
: 我們回答他幾A幾B , 一直到猜出數字 4A 0B 這樣
: 之前爬文有看到隨機產生1~9亂數這部分有看到一種方法是"增加某數字出現的權重"
: 想問問這種語法要怎麼寫呢 ?
: 由於本人是C的無敵新手,只看著課本找到srand()這個亂數函式
: 想問 那種可以控制亂數出現比例的方法 要怎麼寫...
: 又或著有更好的方法 可以把幾A幾B的AI寫出來呢 :)?
基本是用集合過濾法.
已知之前猜過一些數字,整理成一些對應集合,如:
ABCD 0A0B
AXBY 0A2B
.... ....
當你祭出一則 XYZW 的時候,假如它命中,意思就是和之前所猜過但不命中的
每個數字比對,就會是相關的AB情況. XYZW 和 ABCD 比對為 0A0B, XYZW 和
AXBY 比對為 0A2B 等等.
於是,相對的,要出祭出每一則猜測,先把所有數字中,符合已經猜過的數字界定範圍
中的四位數字做為挑選對象. 例如,要祭出 YWXZ, 為什麼要祭出這個數?
因為 YWXZ 和 ABCD 比對是 0A0B, 和 AXBY比對是 0A2B ... 等等,過去猜過的
數字及AB情況完全符合,所以 YWXZ 是一個可以放出去猜的四位數字.
以上是AI部份. 至於你說你是C超新手,那就要多練習了. 這一題可以練很多程式技巧.
--
/yau
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.112.228.29
→ firejox:y大好人 m(_ _)m 06/18 00:25
→ yauhh:是啊,我是好人啊 06/18 00:30
推 tropical72:我想問y大的是,這份code當初有做防die嗎? 06/18 00:40
→ tropical72:也就是那個xaxb,使用者亂輸入,最後電腦判得出來 "有鬼" 06/18 00:40
→ cses:恩 謝謝 我會再想想看的 :) 06/18 00:50