|
論壇說明 |
歡迎您來到『史萊姆論壇』 ^___^ 您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的! 請點擊這裡:『註冊成為我們的一份子!』 |
|
主題工具 | 顯示模式 |
2024-11-04, 05:33 PM | #1 |
管理版主
|
討論 - 理想化的 抽獎亂數如何寫?
最近發生財政部電腦抽獎之微乎其微重複領獎事件
就想到 如果不是作弊、後門 甚麼的話 就是亂數函式寫得太爛 一般來講每一種程式語言都有提供簡單的單一指令 亂數函式 大部分雖說是以時間來當種子成員 但每次跑 相似度其實都很近 原因如何? 可能是除了 時間因子外,還有其他參考因子 差異性不大的關係 也就是只要你是同一部機器去跑 最差的情況就是 相似度極高 又如果 電腦抽獎的軟體是以呼叫 獨立的亂數外掛去運行 那就可能發生 重複中獎的情況 那理想的亂數該如何寫呢? 除了多加混和各式的參考因子外 個人覺得應該要用 100%列表法 也就是 1. 先讓軟體跑出一份所有參賽者都至少中獎過一次的序位清單 2. 再把參賽者重複的部分清除 3. 之後再打亂清單 4. 最後再用此清單跑亂數抽出得獎者 如果要避免重複,可以每抽出一位就把序位清單那位抽離 當然也可用比對方式避免重複 甚至抽離後再打亂一次 方法很多 這種方法主要的特性就在於 兼顧人人有中獎的機會 且對不懂程式的人有個易懂的交代 ================================ 有人會說那不如一開始就爭對名冊跑亂數打亂 再 2 > 3 > 4 當然也是可以的 只是要知道 亂數就是一種 你跑越久就會越亂的設計 如果 做一次 1,絕對會得到比此種方式還亂的結果 越偷懶跑出來的結果會越相似 此帖於 2024-11-06 05:09 PM 被 mini 編輯. |
送花文章: 2012,
|
向 mini 送花的會員:
|
ppp0600 (2024-11-06)
感謝您發表一篇好文章 |