python中的优化方法。类似于排列

2024-05-16 21:45:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个方法,生成我的乘客数量预订过程。参数是最小和最大乘客人数。在

只有两种情况:

  • number_of_adults必须大于0
  • number_of_infants必须小于或等于number_of_adults

代码如下:

    def generate_numbers_of_paxes(min_number=1,max_number=9):

    number_of_passengers=random.randint(min_number, max_number)
    print(number_of_passengers)
    number_of_adults=random.randint(min_number, number_of_passengers)
    number_of_youths=random.randint(0, number_of_passengers-number_of_adults)
    number_of_children=random.randint(0, number_of_passengers-number_of_adults-number_of_youths)
    number_of_infants=random.randint(0, number_of_passengers-number_of_adults-number_of_youths-number_of_children)
    number_of_adults+=number_of_passengers-number_of_adults-number_of_youths-number_of_children-number_of_infants
    if(number_of_adults<number_of_infants):
        difference=number_of_infants-number_of_adults
        number_of_infants-=difference
        number_of_adults+=difference

    return [number_of_adults,number_of_youths,number_of_children,number_of_infants]

numbers_of_paxes=generate_numbers_of_paxes()
for (x,y) in enumerate(numbers_of_paxes):
    print(x,y)

这段代码运行得很好,但是正如您所看到的,这一行中存在一些问题

^{pr2}$

因为每个年龄组的数字之和并不总是等于number_of_passegers,我把差加到{}。在


Tags: ofnumberrandommingeneraterandintchildrennumbers
1条回答
网友
1楼 · 发布于 2024-05-16 21:45:23

你的number_of_infants计算应该是:

number_of_infants = number_of_passengers - number_of_adults - number_of_youths - number_of_children

否则很可能低于所需数量以满足您的乘客要求(介于0和{}之间的random数量)。在

但是。。。考虑到您列出的限制条件,您最好先计算成人之前的婴儿数量,然后再计算以number_of_infants为最小值的成人数量。把孩子的数量留到最后,并应用相同的逻辑。既然这看起来像是家庭作业,我就不提供代码了。在

也就是说:

  1. 随机生成乘客数

  2. 生成随机数量的婴儿 (不能超过数字的一半 乘客人数)

  3. 随机生成成人数量 (必须至少有几个婴儿)

  4. 随机生成青年人数 (不能比乘客少 婴儿少成人)

  5. Number of children是指 乘客减去前三名 组。

还有,你为什么要这么做?在

^{pr2}$

要么这样做:

for (x,y) in enumerate(numbers_of_paxes):
    print(x, y)

或者:

^{4}$

相关问题 更多 >