import random
def random50(all, now_1=0, now_0=0):
remain = all - now_1 - now_0
if remain < 0:
return []
get_list = []
num_1 = now_1
num_0 = now_0
for i in range(remain):
if i == 0 and now_1 == 0 and now_0 == 0:
r = random.randint(0, 1)
get_list.append(r)
num_1 += 1 if r else 0
num_0 += 1 if not r else 0
else:
if remain - i - 1 >= abs(num_1 - num_0):
r = random.randint(0, 1)
get_list.append(r)
num_1 += 1 if r else 0
num_0 += 1 if not r else 0
else:
if num_1 > num_0:
get_list.append(0)
num_0 += 1
else:
get_list.append(1)
num_1 += 1
return get_list
函数功能:生成一个0,1列表,保证列表中0和1的数量尽可能相等(不一定均匀,后续可改进)。
参数说明:all:表示列表总长度。now_1表示已经有1的个数,将在结果中排除