随机数生成

时间:2010-12-04 12:02:51

标签: c++

  

可能重复:
  Expand a random range from 1-5 to 1-7

您好,   这个问题取自 http://blog.seattleinterviewcoach.com/2009/02/140-google-interview-questions.html

  

给出产生一个的函数   随机整数,范围是1到5,   写一个产生一个的函数   随机整数,范围为1到7。

我没有办法通过使用1到5个随机生成器以几乎相等的概率生成所有随机数1到7。

有人可以解决吗?

2 个答案:

答案 0 :(得分:1)

我假设您给出的函数提供了均匀分布的数字,并且严格要求您需要编写的函数也返回均匀分布的数字。

以下伪代码说明了标准技术(称为rejection sampling):

do {
  rand25 = (rand5() - 1) * 5 + rand5; // 1-25
} while (rand25 > 21);
return (rand25 - 1) / 3 + 1;

答案 1 :(得分:-1)

func()+ func()%3怎么样?