# Token Bucket berechnen



## osion (11. Mai 2022)

Hallo



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 (11. Mai 2022)

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 (12. Mai 2022)

mihe7 hat gesagt.:


> 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 (12. Mai 2022)

osion hat gesagt.:


> 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 (12. Mai 2022)

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 (12. Mai 2022)

KonradN hat gesagt.:


> 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.


----------



## osion (13. Mai 2022)

KonradN hat gesagt.:


> 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 hat gesagt.:


> 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


----------

