主题: 随机数问题
查看单个帖子
  #7 (permalink)  
旧 2008-04-03
tomato tomato 当前离线
高级会员
 
注册日期: 2002-09-19
帖子: 840
文章: 7
tomato 正向着好的方向发展
默认 回复: 随机数问题

楼上貌似都理解错题意了
貌似是算法导论的习题,就是已经有一个均匀分布的int rand_5()
要实现一个int rand(n)

我改一下题目,假设rand_5返回0~4,需要构造一个0~n-1的随机数

我的方法是用k次rand_5()(5^k >= n)得到一个k位的5进制数,当这个数大于等于n时丢弃重新来一次,小于等于n时返回
例如n = 31,则k = 3,那么这个3位5进制数为rand_5() * 25 + rand_5() * 5 + rand_5()
回复时引用此帖