如何快速生成满足下述条件的列表?

如何快速生成满足下述条件的列表?

列表A中有10个元素,每个元素为区间[0, 4]中整数,且sum(A)>25


回答:

如果最大值是3,10个元素和大于25明显有特解。

我想你要的应该是通用解法,最好想到的应该是用随机数生成列表,如果和不符合条件就再来一遍。需要随机多少次得看脸,还有取值范围与条件和的关系,条件和越小,命中的概率越大,速度越快。至少需要循环一次,随机10个数。最慢嘛,脸黑的话就是个无底洞,连开100把小的概率总是存在的。

另外一种做法是:初始化一个长度10,值0的列表,然后随机位置加1,如果达到最大值就把这个位置移出随机范围。循环直到和为26。这个方法理论上比上一个方法快,最快的只需要循环随机26次,最慢是26+26//4+1。当然它至少也得随机26次。

另外,如果条件和超过列表和范围的一半,还可以用取差的方式减少循环次数。比如你的条件和如果是38,那么只循环3次找到和大于2的列表,再取补就行了。

两种方法一个看概率,一个有相对确定的循环范围,选哪个,就看初始条件的范围了。

以上是 如何快速生成满足下述条件的列表? 的全部内容, 来源链接: utcz.com/p/938016.html

回到顶部