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