Danke euch für eure Antworten, ich habe es aufgrund eurer Hinweise nun folgendermaßen gelöst:
Code:
// Hier bin ich noch am überlegen, ob ich 1 / Length(a) oder wirklich Length(b) / Length(a) nehme, weil mir der Wert recht hoch vorkommt
n := versuche_pro_zeit * zeit * (Length(b) / Length(a))
für jedes element {
// Um die Sache etwas zufälliger zu gestalten
m = random(n) + n / 2;
for (m) {
führe operation durch
}
}
Die Elemente zu iterieren, statt zufällig auszuwählen, ist auf jeden Fall auch deshalb performanter, weil jedes Element eine maximale Anzahl an möglichen Operationen besitzt. Das heißt es kann sein, dass nach 3 Durchläufen alles "fertig" ist und ich zum nächsten Element übergehen kann. Ob eine Operation erfolg hat, wird allerdings nochmal über einen Zufallsfaktor bestimmt, weshalb hier natürlich auch im schlechtesten Falle wirklich m - Durchläufe stattfinden können.