首先上源碼:
# matrix = np.random.randint(0,10,size=[m,1]) numOjob = random.randint(2, 4) data_list.append(numOjob) timeOJobOnM,numOMachine = extendData(n) data_list.append(numOMachine) data_list = data_list + timeOJobOnM # 'random.randint(2,4)'.join(str() for ad in range(random.randint(1,4))) # ”.join():作用是將引號(hào)里內(nèi)容加入到括號(hào)里元素之間,是字符串操作函數(shù)。 select_list = range(1, n) X = sorted(random.sample(select_list,a)) # n是你想隨機(jī)想選出的個(gè)數(shù) # 在每個(gè)標(biāo)號(hào)后隨機(jī)花費(fèi)時(shí)間 t = [random.randint(1, 15)] new_str =str_list[:c]+list(t)+str_list[c:] # print(new_str,str_list[:c], str_list[c:])n
然后結(jié)果是這樣報(bào)錯(cuò)的:

問題就出在a = random.randint(3,n) ; select_list = range(1, n)這兩行上,因?yàn)閞ange(1,n)產(chǎn)生的整數(shù)列[1,2,3,,,n-1]不包含n,而上一句random.randint(3,n)意思是產(chǎn)生3--n中的一個(gè)整數(shù),而這個(gè)整數(shù)很可能是n,對(duì)于random.sample(select_list,a)意思是從列表select_list中任意選出a個(gè)數(shù),如果a=n的話,明顯已經(jīng)超過了列表select_list的個(gè)數(shù)了,所以就會(huì)出現(xiàn)圖示錯(cuò)誤,當(dāng)然多運(yùn)行幾遍你會(huì)發(fā)現(xiàn)有時(shí)也能正常運(yùn)行,這就是產(chǎn)生的隨機(jī)數(shù)a不等于n的效果。
既然發(fā)現(xiàn)了錯(cuò)誤,改正也很簡(jiǎn)單了,直接select_list = range(1, n+1)即可。
|