Token Bucket berechnen

osion

Bekanntes Mitglied
Hallo

1652299296974.png
1652299496019.png
Ich hätte gesagt, dass ich in der erste Sekunde 6 MBit senden kann und danach sind keine 6 Token mehr vorhanden, aber meine Überlegung ist falsch.
 

mihe7

Top Contributor
Du hast einen 8 l Eimer und eine Pumpe, mit der Du mit einer Förderleistung von 6 l/s das Wasser aus dem Eimer abpumpen kannst.

Die Pumpe ist zunächst aus. Du stellst den Eimer unter einen Wasserhahn, aus dem mit 1l/s Wasser in den Eimer fließt. Sobald der Eimer überläuft, schaltest Du die Pumpe ein, der Wasserhahn bleibt weiterhin aufgedreht. Wie lange dauert es, bis der Eimer leer ist?
 

osion

Bekanntes Mitglied
Du hast einen 8 l Eimer und eine Pumpe, mit der Du mit einer Förderleistung von 6 l/s das Wasser aus dem Eimer abpumpen kannst.

Die Pumpe ist zunächst aus. Du stellst den Eimer unter einen Wasserhahn, aus dem mit 1l/s Wasser in den Eimer fließt. Sobald der Eimer überläuft, schaltest Du die Pumpe ein, der Wasserhahn bleibt weiterhin aufgedreht. Wie lange dauert es, bis der Eimer leer ist?
2 Sekunden dauert es, aber 2 Sekunden ist auch falsch.

=> Versucht habe ich 0, 1000, 2000 ----->
----
Soweit ich verstehe:
-> Anfang kein Speedlimit
-> Neue Token haben eine Token-Generierungsrate (begrenzter Speed)
 

mihe7

Top Contributor
2 Sekunden dauert es, aber 2 Sekunden ist auch falsch.
Wie kommst Du auf 2 Sekunden?

2 Sekunden á 6 l/s würde eine Wasserentnahme von 12 l bedeuten. Wenn der Eimer anfangs 8 l hat, dann müsstest Du 4 l nachfüllen. Das Nachfüllen geschieht mit 1l/s, so dass Du alleine dafür schon 4 s benötigen würdest, um 12 l Gesamtmenge zu erreichen.
 

KonradN

Super-Moderator
Mitarbeiter
Man muss ja nur die "relative" Geschwindigkeit nehmen. Es fließen 6l/min raus und 1l/min rein. Also fließen im Endeffekt 5l/s raus. Dann hat man 8l im Eimer. Bei 5l / s sind das also 8l / 5l/s = 8/5 s = 1 3/5 s = 1,6 s

Bei so Aufgaben bitte nie direkt mit Programmieren anfangen oder so. Mal dir sowas auf. Überlege es Dir in Ruhe! Versuche es erst einmal zu verstehen! Wenn Du die Aufgabe verstanden hast und Du Dir überlegt hast, wie man sowas berechnen kann, dann und wirklich erst dann kann man anfangen, irgendwas zu programmieren.
 

mihe7

Top Contributor
Man muss ja nur die "relative" Geschwindigkeit nehmen. Es fließen 6l/min raus und 1l/min rein. Also fließen im Endeffekt 5l/s raus. Dann hat man 8l im Eimer. Bei 5l / s sind das also 8l / 5l/s = 8/5 s = 1 3/5 s = 1,6 s
So ist das. Und das lässt sich auch leicht herleiten:

8l + t * 1l/s - t * 6 l/s = 0 <=> 8 l - t * 5 l/s = 0 <=> t = 8 l / (5 l/s) = 8/5 s = 1,6 s

EDIT: OMG, ich sollte ins Bett gehen, das hat Konrad ja alles schon beschrieben.
 
Zuletzt bearbeitet:

osion

Bekanntes Mitglied
Man muss ja nur die "relative" Geschwindigkeit nehmen. Es fließen 6l/min raus und 1l/min rein. Also fließen im Endeffekt 5l/s raus. Dann hat man 8l im Eimer. Bei 5l / s sind das also 8l / 5l/s = 8/5 s = 1 3/5 s = 1,6 s

Bei so Aufgaben bitte nie direkt mit Programmieren anfangen oder so. Mal dir sowas auf. Überlege es Dir in Ruhe! Versuche es erst einmal zu verstehen! Wenn Du die Aufgabe verstanden hast und Du Dir überlegt hast, wie man sowas berechnen kann, dann und wirklich erst dann kann man anfangen, irgendwas zu programmieren.
So ist das. Und das lässt sich auch leicht herleiten:

8l + t * 1l/s - t * 6 l/s = 0 <=> 8 l - t * 5 l/s = 0 <=> t = 8 l / (5 l/s) = 8/5 s = 1,6 s

EDIT: OMG, ich sollte ins Bett gehen, das hat Konrad ja alles schon beschrieben.
Das stimmt schon. Also ist die Logik, dass solange mit 6 MBit/s gesendet wird, bis der Bucket leer ist. Eigentlich logisch.
Danke :)
 

Neue Themen


Oben