您好, 这个问题取自 http://blog.seattleinterviewcoach.com/2009/02/140-google-interview-questions.html
给出产生一个的函数 随机整数,范围是1到5, 写一个产生一个的函数 随机整数,范围为1到7。
我没有办法通过使用1到5个随机生成器以几乎相等的概率生成所有随机数1到7。
有人可以解决吗?
答案 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怎么样?