在上一篇文章(http://blog.csdn.net/xzjxylophone/article/details/6835332)中,我们主要完成了这个C#工程的重构和Rand10,Rand12的另一种实现。
这次我们来实现如果用Rand7来产生一个Rand11.
按照以前的思路计算Rand10的时候是分成2个集合(1,3,5,7,9)(2,4,6,810)
那么我们是否可以把11也分成2个集合(1,3,5,7,9,11)和(2,4,6,8,10);
按照10的思路,在Rand10.Next()函数中应该把代码:
if (n > 4)
num *= 2;
else
num = num * 2 - 1;
在Rand11.Next()修改成:
if (n > 4)
num = 2*num-1;//1,3,5,7,9,11
else
num = 2 * Rand5;//此处的Rand5表示随即产生一个1-5的一个数
为了完成Rand11,那必须先实现Rand5.
Rand5