一道面试题引发的有关随机数的思考(3)

在上一篇文章(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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值