itertools组合与循环串联

时间:2018-07-22 16:13:54

标签: python loops for-loop random itertools

我有以下Python代码。因为使用了random,所以每次都会生成一个新答案:

import random

import numpy as np

N = 64 # Given

T = 5 # Given

FinalLengths = []

for i in range(T):

    c = range(1, N)
    x = random.sample(c, 2) # Choose 2 random numbers between 1 and N-1
    LrgstNode = max(x)
    SmlstNode = min(x)
    RopeLengths = [SmlstNode, LrgstNode - SmlstNode, N - LrgstNode] 
    S = max(RopeLengths)
    N = S
    FinalLengths.append(S)

avgS = np.mean(FinalLengths) # Find average

print("The mean of S is {}".format(avgS))

我的研究使我可能使用itertools组合,以生成该范围内的所有可能组合,并使平均值收敛。如果可以,怎么办?

谢谢。

1 个答案:

答案 0 :(得分:0)

听起来像是

import random
import numpy as np
from itertools import combinations

N = 64 # Given
T = 5 # Given

FinalLengths = []

for i in range(T):
  c = list(range(1, N))
  for x in combinations(c, 2):
    S = max([min(x), max(x) - min(x), N - max(x)])
    N = S
    FinalLengths.append(S)

avgS = np.mean(FinalLengths) # Find average

print("The mean of S is {}".format(avgS))

要使用combinations(l, size),我们可以传入列表l以及每个组合元组的大小,以及int size。这就是全部!