我如何解决 Python 中 random.sample 的 ValueError?
How can i work around the ValueError from random.sample in Python?
我正在尝试为背包问题编写代码。如果有一个具有承重能力的背包,您可以选择特定的物品组合来找到最佳解决方案。但是,我试图随机生成可能的解决方案。因此,我的代码将选择随机数量的随机项目(生成随机大小的列表)并测试解决方案是否可行(小于容量)或不可行(大于容量)。但是我在使用 random.sample() 时遇到了问题。为了获得一个随机大小的列表,我将 k 设置为 leng(一个随机整数)并且 population 是从给定项目范围中挑选的项目的随机列表。但我知道如果 leng 大于 population,就会出现 ValueError。我想使用 random.sample() 这样我就可以得到一个唯一数字列表,但我需要以某种方式解决 ValueError 问题。我已经尝试过 try: and except ValueError: 但我不确定如何真正执行它。这是我目前所拥有的:
def genSoln(cap, items)
g = input("Would you like to generate random potential solutions? [y/n] ")
if g == 'y':
gen = int(input("Number of times to generate/check random potential solutions? "))
totalwt = 0
totalval = 0
for i in range(1,gen+1):
try:
pop = range(1,items)
leng = random.randint(1,8)
ran = random.sample(pop, leng)
except ValueError:
pass
for i in ran:
totalwt += int(wts[i])
totalval += int(vals[i])
if i == len(ran):
if totalwt < int(cap):
print("Items picked: ", ran)
print("Feasible: ", "Total Wt = ", totalwt, "Total Val = ", totalval)
else:
print("Items picked: ", ran)
print("Infeasible: ", "Total Wt = ", totalwt, "Total Val = ", totalval)
totalwt = 0
totalval = 0
我应该这样做。
leng = random.randint(1, items)
我正在尝试为背包问题编写代码。如果有一个具有承重能力的背包,您可以选择特定的物品组合来找到最佳解决方案。但是,我试图随机生成可能的解决方案。因此,我的代码将选择随机数量的随机项目(生成随机大小的列表)并测试解决方案是否可行(小于容量)或不可行(大于容量)。但是我在使用 random.sample() 时遇到了问题。为了获得一个随机大小的列表,我将 k 设置为 leng(一个随机整数)并且 population 是从给定项目范围中挑选的项目的随机列表。但我知道如果 leng 大于 population,就会出现 ValueError。我想使用 random.sample() 这样我就可以得到一个唯一数字列表,但我需要以某种方式解决 ValueError 问题。我已经尝试过 try: and except ValueError: 但我不确定如何真正执行它。这是我目前所拥有的:
def genSoln(cap, items)
g = input("Would you like to generate random potential solutions? [y/n] ")
if g == 'y':
gen = int(input("Number of times to generate/check random potential solutions? "))
totalwt = 0
totalval = 0
for i in range(1,gen+1):
try:
pop = range(1,items)
leng = random.randint(1,8)
ran = random.sample(pop, leng)
except ValueError:
pass
for i in ran:
totalwt += int(wts[i])
totalval += int(vals[i])
if i == len(ran):
if totalwt < int(cap):
print("Items picked: ", ran)
print("Feasible: ", "Total Wt = ", totalwt, "Total Val = ", totalval)
else:
print("Items picked: ", ran)
print("Infeasible: ", "Total Wt = ", totalwt, "Total Val = ", totalval)
totalwt = 0
totalval = 0
我应该这样做。
leng = random.randint(1, items)