From 51824067b8d037eabe1260960bb9739fa61228af Mon Sep 17 00:00:00 2001
From: ale <ale@incal.net>
Date: Mon, 1 Aug 2011 14:17:05 +0100
Subject: [PATCH] prune targets in the transition model that would cause the
 same song to be repeated twice

---
 server/djrandom/model/markov.py | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/server/djrandom/model/markov.py b/server/djrandom/model/markov.py
index bc95601..7bdd154 100644
--- a/server/djrandom/model/markov.py
+++ b/server/djrandom/model/markov.py
@@ -54,9 +54,13 @@ class MarkovModel(object):
             norm_vec = []
             tot = sum(target_map.itervalues())
             cur = 0
-            for k, v in target_map.iteritems():
-                cur += float(v) / tot
-                norm_vec.append((cur, k))
+            for target, count in target_map.iteritems():
+                # We explicitly drop this target to avoid repeating
+                # the same song more than once.
+                if target == key[-1]:
+                    continue
+                cur += float(count) / tot
+                norm_vec.append((cur, target))
             norm_map[key] = norm_vec
         self._map = norm_map
 
-- 
GitLab