限定条件:
- 生成随机数的和为N。
- 生成P组。
- 每个随机数的取值范围是1-8。
def generate_images_of_page(img_num, page_num, sigma=1):
list = []
num = page_num #剩余Page数
for i in range(0, page_num):
if num != 1: #除了最后一个随机数,其余随机数的生成规则
mu = int(img_num / num)
#sigma = 4 #设定方差sigma为一个常数
isnotpos = True
while isnotpos: # 循环,当生成的随机数小于2大于8或者剩余总额小于2大于8时时重新生成随机数
#a = random.normalvariate(mu, sigma)
#a = random.randint(2, mu * 2 - 1) # 产生2-8之间的数
a = random.randint(1, mu * 2 - 1) # 产生1-8之间的数
if a > 8:
a = a % 8
#if 2 <= a <= 8: # 产生2-8之间的数
# if (num - 1) * 2 <= (img_num - a) <= (num - 1) * 8:
if 1 <= a <=8: # 产生1-8之间的数
if (num - 1) * 1 <= (img_num - a) <= (num - 1) * 8:
isnotpos = False
a = int(a)
list.append(a)
img_num = img_num - a # 计算剩余总张数
num = num - 1 # 剩余p数
else:
a = img_num
list.append(a)
print(list, sum(list))
return list