I have a method which generates me number of passengers to reservation process. The parameters are the minimum and maximum numbers of passengers.
There are only 2 conditions:
number_of_adultsmust be greater than 0number_of_infantsmust be less than or equal tonumber_of_adults
This is code:
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)
This code works good, but as you can see there is some problem in line
number_of_adults+=number_of_passengers-number_of_adults-number_of_youths-number_of_children-number_of_infants
because sum of number for every age group isn’t always equals number_of_passegers, and I add difference to number_of_adult.
Your
number_of_infantscalculation should be simply:Otherwise it is likely to be lower than the required number to meet your passenger requirements (a
randomnumber between0andnumber_of_passengers - number_of_adults - number_of_youths - number_of_children).However… you are better calculating the number of infants before adults and then calculating the number of adults with
number_of_infantsas the minimum for therandom(), given the constraints you listed. Leave the number of children until last and apply the same logic. Since this looks like homework, I’ll not provide the code for this.That is to say:
Generate random number of passengers
Generate random number of infants
(can’t be more than half of number
of passengers)
Generate random number of adults
(must be at least number of infants)
Generate random number of youths
(can’t be more than passengers less
infants less adults)
Number of children is number of
passengers less previous three
groups.
Also, why are you doing this?
Either do:
Or: