
[英]How to find all partitions of a multiset, where each part has distinct elements?
[英]How to generate random partitions of float number and each part has minimum value pMin?
例如:
我想将33.38分为5个部分,每个部分等于或大于1.2:
2.71,3.3,18.7,1.56,7.11
伪代码中的功能:
public static void printRandomPartition(float value,int numberOfParts,float pMin){
}
public static void main(String[] args){
//it will print 2.71,3.3,18.7,1.56,7.11
printRandomPartition(33.38,5,1.2);
}
另一种情况:
将18.77分为3部分,每部分等于或大于3.2:
4.8,9.55,4.42
当然,输入和输出可能是丑陋的浮点数,例如3.82000000000003,这仅是示例。
我搜索了一些有关它的文章,但似乎大多数都与整数有关,并且用于整数的方法通常使用数组int myArray [n](n是要除数的整数),这对处理浮点数没有用。 有人可以帮忙吗?
伪代码
function Divide(Sum, NParts, MinValue)
//subtract minimal values to deal with corrected sum
ASum = Sum - MinValue * NParts
//generate uniform randoms (in any reasonable range), take their sum
BSum = 0
for i = 0.. NParts - 1
Part[i] = Random
BSum = BSum + Part[i]
//scale randoms to get right corrected sum, then add minimal value to get initial sum
for i = 0.. NParts - 1
Part[i] = Part[i] * ASum / BSum + MinValue
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.