一、分析问题
在生成随机数的时候,在给定范围或给定和都比较简单,但是在两个条件加起来的时候遇到了困难。于是就想通过线性规划的方式来解决这个问题。
为了更好的开始,先回答一个问题,为什么不能随机先随机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个数