Fix popularity score: drop sum-extremity, it inverted the ranking
Testing against known real-world popular combinations (1-2-3-4-5-6, 5-10-15-20-25-30) showed the sum-near-mean penalty scored them HIGHER than spread-out combinations - the opposite of intended. Tight sequential clusters produce both a strong pattern match AND an extreme sum from the same underlying cause, so treating "extreme sum" as an independent unpopularity signal double-counted in the wrong direction for exactly the combinations it should penalize most. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -654,9 +654,17 @@ class UltimateAIMLHybridGenerator:
|
||||
Basis: dokumentierte Spielerverhalten-Biases (Henze/Riedwyl-artige Analysen
|
||||
realer Tippscheine): Geburtstagszahlen (<=31), einzelne "griffige" Zahlen,
|
||||
Zahlenfolgen/arithmetische Muster (z.B. 5-10-15-20-25-30) und "zufällig
|
||||
aussehende" ausgeglichene Odd/Even-Splits + mittige Summen werden von
|
||||
Menschen überproportional oft gewählt - jede einzelne Kombination ist aber
|
||||
exakt gleich wahrscheinlich, unabhängig von diesen Eigenschaften.
|
||||
aussehende" ausgeglichene Odd/Even-Splits werden von Menschen
|
||||
überproportional oft gewählt - jede einzelne Kombination ist aber exakt
|
||||
gleich wahrscheinlich, unabhängig von diesen Eigenschaften.
|
||||
|
||||
Hinweis: eine "Summe nahe am Mittel"-Komponente wurde bewusst NICHT
|
||||
aufgenommen - sie widerspricht sich mit der Muster-Erkennung, da gerade
|
||||
die meistgespielten sequenziellen Kombinationen (z.B. 1-2-3-4-5-6) durch
|
||||
ihre enge Zahlen-Clusterung zugleich eine extreme Summe erzeugen. Ohne
|
||||
Trennung von "Summe extrem durch Streuung" vs. "Summe extrem durch engen
|
||||
Cluster" hätte dieses Merkmal genau die falschesten Kombinationen
|
||||
aufgewertet.
|
||||
"""
|
||||
n = len(numbers)
|
||||
sorted_nums = sorted(numbers)
|
||||
@@ -683,15 +691,11 @@ class UltimateAIMLHybridGenerator:
|
||||
even_count = sum(1 for x in numbers if x % 2 == 0)
|
||||
split_extremity = abs(even_count - 3) / 3 # 0.0 bei 3-3, 1.0 bei 6-0/0-6
|
||||
|
||||
# 5) Summe: Menschen bevorzugen Summen nahe dem statistischen Mittel (~150)
|
||||
sum_extremity = min(abs(sum(numbers) - 150) / 100.0, 1.0)
|
||||
|
||||
score = (
|
||||
above_31_ratio * 0.25
|
||||
+ (1 - popular_ratio) * 0.15
|
||||
+ (1 - pattern_penalty) * 0.20
|
||||
above_31_ratio * 0.30
|
||||
+ (1 - popular_ratio) * 0.20
|
||||
+ (1 - pattern_penalty) * 0.30
|
||||
+ split_extremity * 0.20
|
||||
+ sum_extremity * 0.20
|
||||
)
|
||||
return min(max(score, 0.0), 1.0)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user