‘算法/数据结构’ 分类的存档
假设有一个随机函数 int Random(),其产生的数值区间为 0 到8,请利用这个随机函数构造能够产生随机数范围是0到90的随机函数。
这个题目换一种思考方式就可以了,如果 Random 产生数值区间是0到9,那么我们用它来构造随机数,可以这样做:
用 Random 随机产生一个数,代表 个位数
再产生一个数,代表十位数
我们把两个数组合起来,就可以代表0到99中的任何一个数,而且这种组合方式是完全随机的,因此我们就得到了0到99的一个随机函数:
int Random99()
{
return 10*Random() + Random();
}
好吧,现在Random并不是0到9,而是0到8,这也没关系,我们用0-9的随机函数可以构造10进制数字,那为什么不能用0-8的随机函数构造9进制的数呢? 虽然9进制我们没有接触过,但并不代表我们不能使用它啊。一个二位的9进制数,最大可以为:
88,也就是 8 * 9 + 8 = 80,不过90,那么我们用三位的9进制数就可以了,所以我们的随机函数为:
