看板 PerfectWorld 關於我們 聯絡資訊
※ 引述《gpc (gpc)》之銘言: : 關於這個小弟我提出一些個人的看法 從科學的角度來分析吸飽的這個問題. : 首先,一般程式設計當有"亂數"決定的時候,一般會使用這樣的羽法 : int user; : user = int(rnd() * 6)+1; : 這樣的與法會產生一個 1-6的整數存放到變數user中 : 假設A物品要歸什,我們可以利用上面的程式碼來產生決定一個值,這個值就是得到A物代號 : rnd()是一個取亂樹的函數 : 但實際上rnd()這個函數,在程式中,經過編譯之後他的動作實際上是在一個特定的"亂數表" : 中取出一個數值. : rnd()裡面可以填入"亂樹種子的標號",比方說,rnd(20)=0.156, : 那以後我只要呼叫rnd(20)就會傳回0.156,因此我們並不能說亂數表是完全的亂數 : 實際上在隨機程式的編寫中,選擇亂樹種子最容易的方式就是 timer : timer是系統中的一個時間計數器,以秒為單位,最大為86400,也就是一天的秒數 : 隨著時間 不斷的在改變 : 當程式設計者使用時間(timer)做種子的時候,就會遇到一個問題 : 假設我要產生兩個亂數,當這兩個亂數,產生的時間相當接近,甚至可以說是瞬間的時候 : 由時間timer決定出來的種子可能會相同,導致取出來的亂數會一樣 : 這就是解示根據這個原理,當有寶物產生,會有連續吸到(因為亂樹種子相同), : 或者挑揀(利用亂數種子接近的時候,剪下來的東西,會與同時間撿的人一樣) : 因此從程式開發者的角度來看,亂數隨機 並非真正的亂數 : 只要你掌握住時間.隨機可能真的就不是隨機 : 當然我沒看過也沒反組譯程式,並不了解分寶部分是怎麼決定,但根據編寫程式 : 的經驗,與大多數的隨機程式處理方式,我想應該是十之八九吧 : 警功慘考~ 我覺得你的說法不太能解釋 現今在用來取random number的方法中,通常是利用pseudo-random number generator 而不是不停用seed來查表(應該說seed不是這樣用的) 他是經過指定random seed後,得到一串數列,而依序將這個數列output當作亂數 而指定random seed最常用的方式是timer沒錯,但這個set seed的動作不會常做 同樣的seed會產生出一樣的數列沒錯,但一個數列中每一項之間的關係 可視為indepent(還是要視其產生數列的方法) 這樣產生的亂數並不會因為時間過近而造成一直指定同一個數字 除非不停reset random seed(如果真的這樣的話只能說這工程師太鳥了) 再來,我也不知道它真正分配物品的機制,但我相信絕對不是單純的用亂數決定 他第一個一定有考慮隊員之間的距離,再來如果組隊打怪的時候注意一下,常會 有等級高的吸比較多東西的現象(我自己是這樣覺得,但不確定一定是等級的關係) 假使除了亂數之外有用其他的參數來決定最後如何分配物品的話,這些參數就有可 能被用來動手腳 -- We know. The time of joy will pass again someday. Then, fresh wind blows. It treasures that is happy. too, to be sad, too. Let's repeat it eternally, and live, and go!! maybe happy... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.251.204