首先上源码:
from numpy import *
import numpy as np
import random
def creRowData(n):
# matrix = np.random.randint(0,10,size=[m,1])
data_list = []
# for i in range(m):
numOjob = random.randint(2, 4)
data_list.append(numOjob)
# 工序数
for i in range(numOjob):
timeOJobOnM,numOMachine = extendData(n)
data_list.append(numOMachine)
data_list = data_list + timeOJobOnM
return data_list
# 'random.randint(2,4)'.join(str() for ad in range(random.randint(1,4)))
# ”.join():作用是将引号里内容加入到括号里元素之间,是字符串操作函数。
'''n个机器'''
def extendData(n):
a = random.randint(3,n)
select_list = range(1, n)
X = sorted(random.sample(select_list,a)) # n是你想随机想选出的个数
c = 1
str_1 = X
str_list = list(str_1)
for i in range(len(X)):
# 在每个标号后随机花费时间
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
# 更新
str_list = new_str
c += 2
return new_str,a
Date = creRowData(10)
print(Date)
然后结果是这样报错的:
问题就出在a = random.randint(3,n) ; select_list = range(1, n)这两行上,因为range(1,n)产生的整数列[1,2,3,,,n-1]不包含n,而上一句random.randint(3,n)意思是产生3--n中的一个整数,而这个整数很可能是n,对于random.sample(select_list,a)意思是从列表select_list中任意选出a个数,如果a=n的话,明显已经超过了列表select_list的个数了,所以就会出现图示错误,当然多运行几遍你会发现有时也能正常运行,这就是产生的随机数a不等于n的效果。
既然发现了错误,改正也很简单了,直接select_list = range(1, n+1)即可。