Re: [信長] 自柳生出場到現在的迷思...

看板WarCraft (魔獸爭霸 - 魔獸爭霸3)作者 (☆◤煞气a阿翔◢☆)時間14年前 (2011/03/23 23:04), 編輯推噓20(20011)
留言31則, 27人參與, 最新討論串5/5 (看更多)
※ 引述《b0017570 (FN)》之銘言: : ※ 引述《tinkens (十戒*行屍走肉)》之銘言: : : 推 blackjack0s:如果是傳統的random寫法 機率不是都相同的 03/23 16:01 : : → blackjack0s:然後我瞎猜的認為 這兩個新英雄可能沒加到隨機列表? 03/23 16:02 : : 應該是這可能性比較高@@...是因為之前都沒人提出,所以我才發文來問問 : 開地圖重新看了一下 : 編號[1]~[36]是織田軍英雄 : 編號[51]~[85]是聯合軍英雄 : 編號[101]~[123]是中立英雄 : 隨機的寫法是先Rand 3 : 若為 1 則去Rand[101]~[121] : 若不為 1 則再Rand 2 : 若為 1 則Rand[1]~[36] : 否則Rand[51]~[85] : 看出Bug了嗎? code的部分就不說了...因為我沒寫過地圖 不知道他會不會有甚麼特別的算法.... 不過照肉眼看起來 我不懂為什麼不Rand 3後面設三個判斷式就是了... (if 1 & if 2 & else) 直接講魔獸random的部分 基本上 一定會有些英雄random到的機率很低 那倒不是bug 而是魔獸本身的random是用java的GetRandomInt這個函數來寫的 這個函數長這樣... int __cdecl get_random_int_cj(int a, int b) { int result; int range; int rand_number; if ( a == b ) { result = a; // 如果上下限相等,直接返回 } else { if ( a <= b ) range = b - a + 1; else range = a - b + 1; // 6FACE230是随机种子。本函数计算随机数并且更新种子 rand_number = random_data_calculate_and_update((__int32 *)dword_6FACE230);/ result = a + shift_right(32u, (unsigned int)range * rand_number); } return result; } (懶得打字直接擷取26網站上的code...) 我的理解上啦... 他這個種子的擷取法是用系統開機的時間去做的 然後再用下面那兩行的公式去算出結果的數值 所以其實還蠻不隨機的 如果有心人士的話 只要知道公式怎麼算、種子的時間怎麼取得 他就可以直接推導出要在怎樣的情況下就能以非常高的機率V到自己想要的英雄 所以...大家常常會覺得某些英雄特別容易V到 並不是沒有原因的~ 因為他本來就很可能跟你電腦狀況、使用習慣一起考慮近random裡面 (說是可能因為我沒有去真的研究random怎麼擷取種子的...沒啥意義= =) 所以下次覺得總是V到誰誰誰 不妨考慮一下改一下V的習慣喔XD p.s 如果有錯麻煩請神人更正@@ 很怕給大家錯誤的訊息~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.227.131.57

03/23 23:06, , 1F
嗯嗯嗯~略懂
03/23 23:06, 1F

03/23 23:11, , 2F
喔喔! 原來是這樣阿
03/23 23:11, 2F

03/23 23:11, , 3F
原來是這樣喔 懂了
03/23 23:11, 3F

03/23 23:27, , 4F
不懂不懂
03/23 23:27, 4F

03/23 23:37, , 5F
喔喔~~(裝懂~~~
03/23 23:37, 5F

03/23 23:47, , 6F
看得懂,只是沒在-V
03/23 23:47, 6F

03/23 23:57, , 7F
哦~~原來如此喔!!!!! (不懂還是要裝一下
03/23 23:57, 7F

03/23 23:59, , 8F
用現在時間取亂數這做法還蠻常見的阿
03/23 23:59, 8F

03/24 00:03, , 9F
快推 不然別人會知道我們看不懂
03/24 00:03, 9F

03/24 00:17, , 10F
6FACE230是随机种子。本函数计算随机数并且更新种子
03/24 00:17, 10F

03/24 00:25, , 11F
略...不!我完全看不懂阿!!
03/24 00:25, 11F

03/24 00:40, , 12F
快推 不然別人會知道我們看不懂
03/24 00:40, 12F

03/24 00:40, , 13F
意思是慢幾秒V就可以V到不常V到的英雄嗎
03/24 00:40, 13F

03/24 00:44, , 14F
因為平常V到的都被V光了
03/24 00:44, 14F

03/24 00:52, , 15F
好像C語言= =
03/24 00:52, 15F

03/24 01:48, , 16F
SOGA
03/24 01:48, 16F

03/24 03:02, , 17F
結論:爛random,一點也不隨機
03/24 03:02, 17F

03/24 04:03, , 18F
喔喔 (快推要假裝看的董)
03/24 04:03, 18F

03/24 04:16, , 19F
不是本來就是c語言嘛= =
03/24 04:16, 19F

03/24 08:22, , 20F
快推,不然別人會知道我們看不懂
03/24 08:22, 20F

03/24 08:35, , 21F
是用開機時間? 不是通常用按下V的時候取時間亂數嗎?
03/24 08:35, 21F

03/24 08:35, , 22F
那因為開機時間一定都不一樣 所以V到的英雄應該也都不一樣
03/24 08:35, 22F

03/24 12:29, , 23F
快推 別讓人以為我們不懂
03/24 12:29, 23F

03/24 13:00, , 24F
快推 我聽的董 你講的很好
03/24 13:00, 24F

03/24 14:24, , 25F
種子是時間 所以某個時段去V RAND到一樣的機率會比較高?
03/24 14:24, 25F

03/24 16:59, , 26F
喔~~~~~~~~~~~~~~~~~~~~~~~~~~~ 完全不懂
03/24 16:59, 26F

03/24 22:25, , 27F
程式語言的隨機本來就是假隨機 關鍵在於種子的取法
03/24 22:25, 27F

03/24 22:26, , 28F
你說沒研究種子怎麼取 這篇完全沒有解釋道你想要表達的
03/24 22:26, 28F

03/24 22:27, , 29F
你還是真的弄懂了 再來發這篇文章吧
03/24 22:27, 29F

03/27 01:29, , 30F
可是我V到島津機率爆高耶 每次一出現都很無言
03/27 01:29, 30F

03/27 01:31, , 31F
原來島津是我的老朋友 有緣都會再見面
03/27 01:31, 31F
文章代碼(AID): #1DYWlqik (WarCraft)
文章代碼(AID): #1DYWlqik (WarCraft)