Moin,
Hmja, _etwas_ unscharf kam mir mein Problem schon auch vor... Das war ja quasi grad mein Problem.
Aber das mit der Summe aller Werte ist ein guter Tip, bin ich nicht drauf gekommen und werd damit mal ein bisschen rumprobieren.
Zwei Sachen sollte ich vielleicht noch ergänzen: 1.)Die Werte für die Wahrscheinlichkeiten können durchaus auch mehrfach vorkommen, und 2.) ich hatte mich gestern abend vertan mit einem anderen Teil meiner Liste - 0 und 9 bedeuten nicht nie und immer sondern sehr selten und sehr oft, also ist doch kein diesbezügliches Spezialproblem zu berücksichtigen.
Hab Deine Idee jetzt so umgesetzt:
Code: Alles auswählen
from random import randint
txtListe = [["text1", "text2", "text3", "text4", "text5", "text6", "text7", "text8", "text9", "text10"],
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]]
summeWahrscheinlichkeiten = sum(txtListe[1]) + len(txtListe[1])
t = [0,0,0,0,0,0,0,0,0,0]
for k in range(1,10000):
a = 1
gewinnTxt = ""
gewinnLos = randint(0, summeWahrscheinlichkeiten)
for i,j in zip(txtListe[0], txtListe[1]):
if a <= gewinnLos <= a+j+1:
gewinnTxt = i
t[txtListe[0].index(gewinnTxt)] += 1
a += j + 1
for a,b,c in zip(t, txtListe[0], txtListe[1]):
print b + " (" + str(c) + ") - " + str(a/100) + "%"
Klappt ganz gut, hätte nur noch zwei Fragen dazu:
1.) Es scheint einen Unterschied zu machen, ob die Liste mit den Wahrscheinlichkeiten aufsteigend oder absteigend angelegt ist - wenn sie absteigend ist so wie jetzt oben im code bekomme ich eine Verteilung von 1% bis 20%. Sind sie aufsteigend, also von 0..9, geht die Verteilung von 3% bis 18%, und komischerweise bekomme ich dann meistens für 8 und 9 gleichermassen 18% raus. Woran kann das liegen?
2.) Ist in meinem code irgendwas generell totaler Unsinn / sehr umständlich / viel zu kompliziert / etc.?
Oh, /me, das ist ja nochmal ganz was anderes... werd ich mir mal ansehen!
Danke für eure Hilfe,
LG,
123
EDIT: /me, Dein Vorschlag ist schon grundsätzlich auch das, was ntrunk vorgeschlagen hat und ich jetzt probiert habe, oder? Wäre Deine Variante schneller?