首页 新闻 会员 周边 捐助

给定一个函数rand()能产生0到n-1之间的等概率随机数,问如何产生0到m-1之间等概率的随机数?

0
悬赏园豆:5 [待解决问题]
  1. int random(int m , int n)  
  2. {  
  3.     int k = rand();  
  4.     int max = n-1;  
  5.     while(k < m)  
  6.     {  
  7.         k = k*n + rand();  
  8.         max = max*n + n-1;  
  9.     }  
  10.     return k/(max/n);  
  11. }

有哪位大神可以给讲解一下 每一步的具体含义以及为什么这么做不?3Q!

adaan的主页 adaan | 初学一级 | 园豆:193
提问于:2013-09-12 17:44
< >
分享
所有回答(1)
0

最简单最粗糙最暴力的方法,m = 5 ,n = 10,带进去算啊

iEvent | 园豆:529 (小虾三级) | 2013-09-13 08:49

k=4 ,k=8,再放进去,神马都破解了

支持(0) 反对(0) iEvent | 园豆:529 (小虾三级) | 2013-09-13 08:50
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册