首页 > 代码库 > Rand1 -> RandN
Rand1 -> RandN
Rand1*1 => uinformly distribution of 0,1 2
Rand1*2 + Rand1 => 0,1,2,3 4
Rand1*3 + Rand2 => 0,1,2,3,4,5 6
Rand1*4 + Rand3 => 0,1,2,3,4,5,6,7 8
...
Rand1*5 + Rand4 => 0,1,2,3,4,5,6,7,8,9 10
if(n==63)
63<64.
Rand1*32 + Rand31 == Rand1*32 + Rand1*31 + Rand30....
RandN(){
if(N==1)
return ...
}
int getRandN(int n){ int ret = 0; while(true){ ret = RandN(n); if(ret<n) break; }}int RandN(int n){ if(n<1) return -1; if(n==1) return Rand1(); n2 = n/2; return Rand1*n2 + RandN(n2-1); }
Rand1 -> RandN
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。