Re: [問題] 產生一亂數且取N餘數,必需為M

看板Programming作者 (喲)時間13年前 (2012/09/09 21:10), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《dm33 ()》之銘言: : 即 Rand() % N = M : 但N與M為已知,這個亂數產生要怎麼比較快符合需求 : 實例 產生 5位數之亂數,取7餘數必需為3 : 目前我只想到最爛的方法,就是一直跑loop直到命中為止 : 請問有人有更好的方法嗎,謝謝 已知 N, M 令有 f(x): x % N 及某數 s 若 f(s) = M 則 f(s) = M => s % N = M => s = t * N + M 你只要取一個隨機整數 t, 求 (t * N + M) 就可以滿足某 rand() % N = M. 當 10000 =< s < 99999 時, (10000 - M) / N =< t < (99999 - M) / N. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 36.226.101.187
文章代碼(AID): #1GJ9Kqqy (Programming)
文章代碼(AID): #1GJ9Kqqy (Programming)