Если у каждого устройства есть время t (в секундах), которое потребуется для заполнения, то, скажем, T является кортежем всех устройств T = (t1, t2, .... tn,)
В среднем количество секунд, которое необходимо увеличить каждому устройству (если увеличение в целочисленных процентах), будет t / 100.
Таким образом, для каждой итерации должна быть вероятность 20 / т / 100.с приращением.
Таким образом, для N устройств, чтобы вернуть список пар (устройство #, увеличить?), вы можете сделать это.
from random import random
class devices():
def __init__(self, T, interval=20):
self.devices = N * [0]
self.T = T
def iteration(self):
for i in range(len(self.devices)):
self.devices[i] = min(100, self.devices[i] + \
(1 if random() < (interval * 100 / self.T[i])) else 0)
return [[i, self.devices[i] for i in range(len(self.T))]
Чтобы использовать его
devs = devices([t1, t2, t3, ..., tn])
then every 20 seconds
state = devs.iteration()
Могут быть и другие факторы, например, отсутствие случайного выбора.Я не знаю, какие устройства вы моделируете, но, возможно, процесс, который их заполняет, имеет время суток, погоду или другие факторы, которые могут быть включены в симуляцию