![]() |
理想化的 抽獎亂數如何寫?
最近發生財政部電腦抽獎之微乎其微重複領獎事件
就想到 如果不是作弊、後門 甚麼的話 就是亂數函式寫得太爛 一般來講每一種程式語言都有提供簡單的單一指令 亂數函式 大部分雖說是以時間來當種子成員 但每次跑 相似度其實都很近 原因如何? 可能是除了 時間因子外,還有其他參考因子 差異性不大的關係 也就是只要你是同一部機器去跑 最差的情況就是 相似度極高 又如果 電腦抽獎的軟體是以呼叫 獨立的亂數外掛去運行 那就可能發生 重複中獎的情況 那理想的亂數該如何寫呢? 除了多加混和各式的參考因子外 個人覺得應該要用 100%列表法 也就是 1. 先讓軟體跑出一份所有參賽者都至少中獎過一次的序位清單 2. 再把參賽者重複的部分清除 3. 之後再打亂清單 4. 最後再用此清單跑亂數抽出得獎者 如果要避免重複,可以每抽出一位就把序位清單那位抽離 當然也可用比對方式避免重複 甚至抽離後再打亂一次 方法很多 這種方法主要的特性就在於 兼顧人人有中獎的機會 且對不懂程式的人有個易懂的交代 ================================ 有人會說那不如一開始就爭對名冊跑亂數打亂 再 2 > 3 > 4 當然也是可以的 只是要知道 亂數就是一種 你跑越久就會越亂的設計 如果 做一次 1,絕對會得到比此種方式還亂的結果 越偷懶跑出來的結果會越相似 |
之前抓一個抽獎APP,重複選擇性就很接近
|
所有時間均為台北時間。現在的時間是 11:48 PM。 |
Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2025, Jelsoft Enterprises Ltd.
『服務條款』
* 有問題不知道該怎麼解決嗎?請聯絡本站的系統管理員 *