通过思考,能够转换模型,即已知数值范畴[a,b],设定有x个数,数值总和为Sum。
前提条件是Sum的范畴应是[ax,bx]
那么首先判断取第一数值时,x1的数值范畴是多少?
假设x-1个数值都为a,则x1的取值下限为Sum-a(x-1),又已限定下限为b,则Max(x1)=Min(b,Sum-a(x-1))
同理,假设x-1个数值都为b,则x1的取值上限为Sum-b(x-1),又已限定下限为b,则Min(x1)=Max(a,Sum-b(x-1))
即x1在[Max(a,Sum-b(x-1)),Min(b,Sum-a(x-1))]范畴内取值。则选取x2时,Sum1=Sum-x1,
那么在选取第i个数值时,还余下(x-i)个待选数值,Sum(i)=Sum-(x1+x2+…+x(i-1)),x(i)的取值范畴应为[Max(a,Sum(i)-b(x-i)),Min(b,Sum(i)-a(x-i))]。接下来就能够用循环语句给x(i)赋值,代码如下:
Private Sub XArr(a as Double ,b as Double, Sum as Double,N as Interge)
Dim X( ) as Double
Redim X( 1 to N)
for i = 1 to N
X(i)=RndBT(Max(a,Sum(i)-b*(N-i)),Min(b,Sum(i)-a*(N-i)),Index) 'RndBT是自定义函数,求两个数值间的随机数 Sum=Sum-X(i)
Next
End Sub
纯手打,有谬误的中央请谅解
如果大家有更好的思路或者代码我还是会给分的[url]https://www.douban.com/doulis...[/url]
[url]https://m.douban.com/doulist/...[/url]
[url]https://book.douban.com/douli...[/url]
[url]https://movie.douban.com/doul...[/url]
[url]https://www.douban.com/doulis...[/url]
[url]https://m.douban.com/doulist/...[/url]
[url]https://book.douban.com/douli...[/url]
[url]https://movie.douban.com/doul...[/url]
[url]https://www.douban.com/doulis...[/url]
[url]https://m.douban.com/doulist/...[/url]
[url]https://book.douban.com/douli...[/url]
[url]https://movie.douban.com/doul...[/url]
[url]https://www.douban.com/doulis...[/url]
[url]https://m.douban.com/doulist/...[/url]
[url]https://book.douban.com/douli...[/url]
[url]https://movie.douban.com/doul...[/url]
[url]https://www.douban.com/doulis...[/url]
[url]https://m.douban.com/doulist/...[/url]
[url]https://book.douban.com/douli...[/url]
[url]https://movie.douban.com/doul...[/url]
[url]https://www.douban.com/doulis...[/url]
[url]https://m.douban.com/doulist/...[/url]
[url]https://book.douban.com/douli...[/url]
[url]https://movie.douban.com/doul...[/url]
[url]https://www.douban.com/doulis...[/url]
[url]https://m.douban.com/doulist/...[/url]
[url]https://book.douban.com/douli...[/url]
[url]https://movie.douban.com/doul...[/url]
[url]https://www.douban.com/doulis...[/url]
[url]https://m.douban.com/doulist/...[/url]