This code creates a client class with variables name
, arrival time
, and delay
. The loop creates new clients in a queue by reading their arrival time, adding a delay to it, and make it the arrival for the new client. When appending the client objects to the queue all are distinct, however when I try to read them they become the same for only the arrival time. Why does this happen?
import random
import numpy as np
import collections
# a client class for creating a queue using a poisson distribution. The clients are added to a deque
class Client:
def __init__(self):
self.name = random.choice(["Juan", "julia", "Daniel", "Rafael", "Lida", "Sandra"])
self.arrival_time = 0
self.arrival_time_delay = np.random.poisson(5, size=1)
def __str__(self) -> str:
return "Client: {} arrival-time: {} delay {}".format(self.name, self.arrival_time, self.arrival_time_delay)
client_count = 5
queue = collections.deque()
# arrival
time_added = 0
# adding clients to a deque
for _ in range(client_count):
client = Client()
# a new time is the arrival time plus a delay for the next client to appear
client.arrival_time = time_added
print(client)
queue.append(client)
time_added += client.arrival_time_delay
print(60 * "#")
for c in queue:
print(c)
#results:
#Client: julia arrival-time: 0 delay [6]
#Client: Sandra arrival-time: [6] delay [3]
#Client: Lida arrival-time: [9] delay [4]
#Client: Juan arrival-time: [13] delay [8]
#Client: Sandra arrival-time: [21] delay [6]
############################################################
#Client: julia arrival-time: 0 delay [6]
#Client: Sandra arrival-time: [27] delay [3]
#Client: Lida arrival-time: [27] delay [4]
#Client: Juan arrival-time: [27] delay [8]
#Client: Sandra arrival-time: [27] delay [6]
3