此问题目的,rand10() 每个数出现的概率为10%。
已知rand7()中每个数出现的概率是相等得,根据排列组合中的分类,可以得到如果rand7()*rand7()则结果概率为1/49。
要想爱你个得到概率为10%的数,可以构造一个1-10*n的均匀分布的随机整数区间(n为任何正整数)。
假设x是这个1-10*n区间上的一个随机整数,那么x%10+1就是均匀分布在1-10区间上的整数,而rand7()*7+rand7()正好可以得到的1-49之间任何数,概率同样为1/49。
去除41-49之间的数,根据%10运算就可以得到一个概率为1/10,值在0-9之间的数,加1即可得到结果。