Wenn eine Folge von Ereignissen mit Wahrscheinlichkeiten zwischen 0,0 und 1,0 gegeben ist, generieren Sie die Wahrscheinlichkeit, dass jede Kombination auftritt, und leiten Sie sie ab. Sie können davon ausgehen, dass eine Folge von Zahlen in dem von Ihnen gewählten Konstrukt enthalten ist.
Hier ist ein Beispiel; Sie können davon ausgehen, dass die Länge der Sequenzkombinationen in den Speicher passt:
{ 0.55, 0.67, 0.13 }
Das Programm gibt jede Kombination und die zugehörige Wahrscheinlichkeit des Auftretens dieser Sequenz aus. Eine 1 gibt an, dass das Ereignis in diesem Index der Eingabesequenz aufgetreten ist, und eine 0 gibt an, dass dieses Ereignis nicht aufgetreten ist. Die gewünschte Ausgabe ist unten (es ist mir egal, ob ich die Arbeit drucke, das ist nur zu Informationszwecken des Algorithmus):
[0,0,0] = (1 - 0.55) * (1-0.67) * (1-0.13) = 0.129195
[0,0,1] = (1 - 0.55) * (1-0.67) * (0.13) = 0.019305
[0,1,0] = (1 - 0.55) * (0.67) * (1-0.13) = 0.262305
[0,1,1] = (1 - 0.55) * (0.67) * (0.13) = 0.039195
[1,0,0] = (0.55) * (1-0.67) * (1-0.13) = 0.157905
[1,0,1] = (0.55) * (1-0.67) * (0.13) = 0.023595
[1,1,0] = (0.55) * (0.67) * (1-0.13) = 0.320595
[1,1,1] = (0.55) * (0.67) * (0.13) = 0.047905
Dieses Problem hängt tangential mit der Berechnung eines "kartesischen Produkts" zusammen.
Denken Sie daran, das ist Code-Golf, also gewinnt der Code mit der geringsten Anzahl von Bytes.
[0.129195, 0.019305, 0.262305, ..., 0.047905]
als Ausgabe genug oder sind die [0,0,0], [0,0,1], ...
nötig?