Re: [問題] 產生一亂數且取N餘數,必需為M
※ 引述《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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
Programming 近期熱門文章
PTT數位生活區 即時熱門文章