- 主题:给定一个整数85,随机将其分成5个整数,要求每个整数不小于15
每个整数不大于20。
就这么个看似简单的问题,刚才搞程序来解决,发现很难每次都生成达到满足要求的结果。
能否帮我看看,怎么解决这个问题。谢谢!
--
FROM 112.1.168.*
你可以参考一下微信随机红包的策略。因为你的需求本质上并不是随机的
【 在 bfield 的大作中提到: 】
: 每个整数不大于20。
: 就这么个看似简单的问题,刚才搞程序来解决,发现很难每次都生成达到满足要求的结果。
: 能否帮我看看,怎么解决这个问题。谢谢!
: ...................
--
FROM 39.149.15.*
很简单,你先把15减掉,然后随机小于5的数即可。
【 在 bfield 的大作中提到: 】
: 每个整数不大于20。
: 就这么个看似简单的问题,刚才搞程序来解决,发现很难每次都生成达到满足要求的结果。
: 能否帮我看看,怎么解决这个问题。谢谢!
: ...................
--
FROM 114.245.107.*
这样并不能保证随机
【 在 rpk 的大作中提到: 】
: 很简单,你先把15减掉,然后随机小于5的数即可。
--
FROM 39.149.15.*
10随机分5份,有大于5的重新分,这就随机了哈。
【 在 upndown 的大作中提到: 】
: 这样并不能保证随机
--
FROM 114.245.107.*
if不行then再生成一组,直到满足要求
【 在 bfield 的大作中提到: 】
: 每个整数不大于20。
: 就这么个看似简单的问题,刚才搞程序来解决,发现很难每次都生成达到满足要求的结果。
: 能否帮我看看,怎么解决这个问题。谢谢!
--
FROM 123.113.80.*
既然是使用程序,那就简单了。
首先遍历所有满足要求的组合,将每种组合作为元素放到容器中,然后从该容器中随机选取一个元素既可。
【 在 bfield 的大作中提到: 】
: 每个整数不大于20。
: 就这么个看似简单的问题,刚才搞程序来解决,发现很难每次都生成达到满足要求的结果。
: 能否帮我看看,怎么解决这个问题。谢谢!
--
FROM 219.142.144.*
看看这个符合你的需求不?
var total = 85;
var base = 15;
var parts = 5;
var available = total - base * parts;
var indexVector = [];
for (var i = 0; i < parts - 1; i++) {
indexVector[i] = Math.ceil(Math.random() * available);
}
var numberVector = [];
indexVector.sort(function(a, b) {
return a - b;
});
indexVector.push(available);
var start = 0;
for (var i = 0; i < parts; i++) {
var number = indexVector[i] - start;
numberVector[i] = base + number;
start = indexVector[i];
}
var sum = 0;
numberVector.map(function(n) {
sum += n;
})
console.log(numberVector);
console.log(sum);
【 在 upndown 的大作中提到: 】
: 这样并不能保证随机
:
--
FROM 112.41.21.*
在长度为10的一条线上随机找4个点,分成至多5个线段,每个线段长度+15?
【 在 bfield 的大作中提到: 】
: 每个整数不大于20。
: 就这么个看似简单的问题,刚才搞程序来解决,发现很难每次都生成达到满足要求的结果。
: 能否帮我看看,怎么解决这个问题。谢谢!
: ...................
--
FROM 219.142.240.*
嗯我前面给的代码就是这个思路。
【 在 ballpen 的大作中提到: 】
: 在长度为10的一条线上随机找4个点,分成至多5个线段,每个线段长度+15?
:
--
FROM 112.41.21.*