random(Max – Min +1) + Min 推导过程

都知道可以使用java.util.Random 产生一个随机数。通过指定参数,使得产生一个小于次数的随机数。值的范围为:[ 0, Max) ; 其中Max 就是指定的参数。但是业务需求想产生一个 [ 10, 100]; 内的随机数怎么产生呢。这个问题极其了我的兴趣。
其实他是个二元一次方程。通过解方程,得到了他的公式,下面是我推导的公式。

【Min, Max】= random(Max – Min +1) + Min 推导过程

题目:已知random方法能返回一个【0, Max-1】左闭右闭的随机数。其中Max是个确定值, 即:【0, Max-1= random(Max)
求random返回一个固定范围的左闭右闭的随机数。即:求解【Min, Max】= random(x) + y 中的x , y。即求【Min, Max】= random(x) + y中的x, y。

解:分析题意:由题意:【0, Max-1= random(Max)
可将x未知数带入得(1);题意中问题也是一个恒等式。这样就得到了两个等式。两个未知数。这样就能得到答案。

(1): 由题意得恒等式(1):【0, x-1= random(x)2): 由题意得恒等式(2):【Min, Max】= random(x) + y
(3:  将(1)带入(2)得 如下式子
		 【Min, Max】=0, x-1+ y
(4:    由(3)知道:两个区间相等, 则两个区间的首位必相等。得如下式子:
(5)	 y = Min;6:    Max = x – 1 +y
(7:    由(5), (6)得到x, y,的值为
(8:    y = Min 
(9:    x = Max – Min +110:   得答案:【Min, Max】= random(Max – Min +1) + Min
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值