作者yauhh (哟)
看板Programming
标题Re: [问题] 产生一乱数且取N余数,必需为M
时间Sun Sep 9 21:10:09 2012
※ 引述《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