python中的最优随机序列排列选择

时间:2012-01-05 07:08:34

标签: python random iterator permutation

我正在研究一个python 2.6脚本,用一小部分媒体成绩单来创作诗歌。

Atm我很困惑地选择有效音节计数的随机组合来组成已知 - (音节)长度字符串池中的半随机行。当前函数受这里提出的powerset()函数的启发:http://docs.python.org/release/3.1.3/library/itertools.html

def valid(self, iterable, target):
    s = list(iterable)
    range_floor = target / max(s)
    range_ceil = target / min(s)
    unfiltered = chain.from_iterable(self.combinations_with_replacement(s, r) for r in range(range_floor, range_ceil))
    return random.choice(list(ifilter(lambda x: sum(x) is target, unfiltered)))

快速举例说明:如果我有两组数据分为5个和10个音节单元组成一个20音节线,有效组合将包括:(5,5,5,5),(10, 10),(5,10,5)和(10,5,5)。

随着大量可能的组合(更长的线,超过两个组成单位长度)处理时间变得非常重要 - 这是我现在主要关注的问题。我最终可能会限制我的范围,并对某些变量提供硬性上限,以避免更激烈的选择。

当我写这篇文章时,我发现它可能是这样一种情况,只要坚持使用现有的算法和缓存/ pickle过去的结果来保存自己不止一次地完成工作 - 但是我没有CS或数学方面的背景,所以我怀疑我可能会忽略那些明显的东西。

0 个答案:

没有答案