[問題] C的rand()語法是不是有問題?

看板C_and_CPP作者 (【D】)時間16年前 (2010/01/14 01:05), 編輯推噓5(5013)
留言18則, 9人參與, 最新討論串1/1
  rand()是C的隨機語法吧。其實不是什麼大問題,寫樂透與猜拳會用到這個,最初的 問題是,隨機產生竟然是被鎖死的,後來加了srand(time(NULL));條件後有所改善。直到 我寫井字遊戲,也就是OX遊戲,花了不少時間寫AI,而玩家勝利的條件是,由電腦先 攻才能贏。贏的方法是靠rand()隨機選到1/5的第三手關鍵位置才會輸,但事實上在玩 的時候,玩家贏的機率微乎其微。大多是平手,玩家下錯一定輸,玩家先攻一定不會贏。             ↑(永遠只選到"那個"的錯覺!)   rand()是不是一個寫失敗的隨機數列?(意旨一個不公平的機率)   請問有人得知rand()的數學式是如何導來的嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.46.143.216

01/14 01:12, , 1F
隨機數本來就不保證會公平阿 都說是隨機了 XD
01/14 01:12, 1F

01/14 01:13, , 2F
他也只是一張亂數表,想更公平你就再自己處理一下數字吧
01/14 01:13, 2F

01/14 01:21, , 3F
在你玩過一百場並且好好算過勝率之前應該都只是錯覺
01/14 01:21, 3F

01/14 01:54, , 4F
看不懂講啥…如果花了不少時間寫AI玩家一定輸那是正常
01/14 01:54, 4F

01/14 01:55, , 5F
吧,如果還給玩家贏那之前的effort都用去哪裡了
01/14 01:55, 5F

01/14 04:52, , 6F
你可以看看rand()怎麼產生亂數的:http://0rz.tw/OEvxA
01/14 04:52, 6F

01/14 04:52, , 7F
或者搜尋C++ rand() implementation
01/14 04:52, 7F

01/14 04:53, , 8F
就可以知道一些原因 還有很多討論Pseudo-random數字的
01/14 04:53, 8F

01/14 04:54, , 9F
問題
01/14 04:54, 9F

01/14 11:56, , 10F
OX遊戲是個永遠平手的遊戲 除非玩家不會玩
01/14 11:56, 10F

01/14 12:19, , 11F
我同4樓.. -_-" 不知道原po工三毀...
01/14 12:19, 11F

01/14 12:24, , 12F
隨機的東西想要亂度更大主要是需要更好的seed吧...time不
01/14 12:24, 12F

01/14 12:24, , 13F
是個好seed XD
01/14 12:24, 13F

01/14 12:24, , 14F
還有 我覺得是程式的問題...
01/14 12:24, 14F

01/14 12:25, , 15F
不然應該是不會有變異度應該不會小到看不出來
01/14 12:25, 15F

01/14 14:35, , 16F
不過rand()在srand()之後的前幾發好像普遍都不夠亂。
01/14 14:35, 16F

01/14 21:40, , 17F
C 的 rand 分佈不夠隨機吧..
01/14 21:40, 17F

01/15 01:58, , 18F
文章代碼(AID): #1BJVrsuv (C_and_CPP)