Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python itertools组合与循环_Python_Loops_For Loop_Random_Itertools - Fatal编程技术网

Python itertools组合与循环

Python itertools组合与循环,python,loops,for-loop,random,itertools,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 LrgstNod

我有以下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组合,以产生范围内所有可能的组合,并使平均值收敛。如果是,怎么做

谢谢。

听起来你想要的是这样的东西:

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))

要使用
组合(l,size)
我们可以传入一个列表
l
和每个组合元组的大小,以及int
size
。就这些

您想要2号的所有组合,还是任何可能的尺寸的所有组合?谢谢。为了澄清这一点,该问题指出存在一个长度为N且整数坐标(1,…,N)的字符串−1). 随机选择2个唯一坐标,不替换,在这2个坐标处剪切字符串,并将生成的3个片段中最长的片段作为新字符串。这是T次(只要可以在唯一的整数坐标处剪切字符串)并调用最终结果字符串的长度S。我试图在给定T和N时找到S的平均值。我仍然在试图将我的头脑集中在迭代和组合上,这是不同的。为什么要找到平均值呢?这只是学术兴趣吗?这听起来像是一个最大化或最小化的问题,而不是一个平均值有用的问题…你确实有道理。。。问题陈述的措辞很奇怪。也许我们应该在计算所有组合后,找到最终结果字符串的平均值?查找五次迭代的平均值没有意义,因为字符串越来越小。。。如果是这样的话,那将如何改变呢?我将首先澄清要解决的问题。这是针对课堂或其他“学术”(即非现实世界)问题,如应用程序或算法挑战,还是为了帮助实现某些业务目标?不管怎样,我都会把问题弄清楚,然后就把算法写在问题上。。。