在给定范围生成n个随机数,其和固定

文章通过线性规划的方法解决在给定范围内生成随机数的问题,通过分析为何不能先随机n-1个数再计算第n个数的原因,提出逐步求解前n-1个数和的范围,确保每个数都在指定区间内的策略。给出Python代码示例进行演示,利用数学归纳法证明了这种方法的可行性。
摘要由CSDN通过智能技术生成

一、分析问题

在生成随机数的时候,在给定范围或给定和都比较简单,但是在两个条件加起来的时候遇到了困难。于是就想通过线性规划的方式来解决这个问题。

为了更好的开始,先回答一个问题,为什么不能随机先随机n-1个数,再用n个数的和s减去这n-1个数来得到第n个数。

回答这个问题并不难,但这里要用图像来说明这个问题,图中用例为将20随机分为10个数,每个数的范围为[1.5,2.1]

如上图,x轴是第10个数的取值,y轴是前9个数的和的范围,直线是x+y=20。显然,满足条件的点应该在直线上,并且在四条水平或垂直的直线构成的矩形里面。从图中就可以看到,要使第10个在给定的范围内,前9个数的和能够用到的取值只占条件范围的很小一部分。

二、问题思路

这里用表示要分解的数,用表示要得到的随机数,[,]是随机数的范围。

既然想到了这里,那么问题的思路就非常简单了。为了保证第n个数在给定的范围内,就需要求出前n-1个数

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值