第一種問題和方法
有三個變量 x1,x2,x3
生成滿足約束的值:
x1+x2+x3=n
a1<x1<b1,a2<x2<b2,a3<x3<b3
思路:
1、 a3<x3<b3,所以 a3<n−x1−x2<b3
2、由1得, n−x1−b3<x2<n−x1−a3
3、由2得, n−x1−b3>a2,n−x1−a3<b2,所以, x1∈[n−(b2+b3),n−(a2+a3)]
步驟:
1、生成 x1∈[n−(b2+b3),n−(a2+a3)]
2、生成 x2∈[n−(x1+b3),n−(x1+a3)]
3、生成 x3=n−x1−x2
第二種問題和方法
有三個變量 x1,x2,x3
生成滿足約束的值:
x1+x2+x3=n
a1<x1<b1,a2<x2<b2,a3<x3<b3
思路:
1、 x1=y1/(y1+y2+y3)∗n,所以 a1<y1/(y1+y2+y3)∗n<b1
2、若 a1<y1<b1,所以 0<1/(y1+y2+y3)∗n<1
步驟:
1、生成 y1∈[a1,b1], y2∈[a2,b2], y3∈[a3,b3]
2、如果 y1+y2+y3>n, 生成 x1=y1/(y1+y2+y3)∗n, x2=y2/(y1+y2+y3)∗n, x3=y3/(y1+y2+y3)∗n
3、如果 y1+y2+y3<n,生成 x1=y1∗n/(y1+y2+y3), x2=y2∗n/(y1+y2+y3), x3=y3∗n/(y1+y2+y3)