diff --git a/models/database.py b/models/database.py
index bc36fc2759f789bb3dce7a5195876f62c716013b..d0cb806a40d23df28096343591eacfe323d9aca5 100644
--- a/models/database.py
+++ b/models/database.py
@@ -1,6 +1,7 @@
 from flask.ext.login import UserMixin
 
 from datetime import datetime
+import random
 
 from shared import db
 
@@ -100,6 +101,8 @@ class Topic(db.Model):
             return sorted(statements, key=lambda st:-2 if st.is_current else -1 if st.is_meta else st.id)
         elif self.mode == "balanced":
             return sorted(statements, key=lambda st:-2 if st.is_current else -1 if st.is_meta else st.speaker.count(self))
+        elif self.mode == "random":
+            return sorted(statements, key=lambda st:random.random())
         else:
             return statements
     
diff --git a/models/forms.py b/models/forms.py
index 20489601e348e28585a7879f09cef1c0309469f0..f9e0be3802efa23b6423d4d9e1ba194906886316 100644
--- a/models/forms.py
+++ b/models/forms.py
@@ -37,5 +37,5 @@ class NewEventForm(Form):
 
 class NewTopicForm(Form):
     name = StringField("Name", validators=[InputRequired("Entering the name is required.")])
-    mode = StringField("Mode", validators=[InputRequired("Entering the mode is required."), AnyOf(values=["balanced", "fifo"], message="Must be 'balanced' or 'fifo' atm.")])
+    mode = StringField("Mode", validators=[InputRequired("Entering the mode is required."), AnyOf(values=["balanced", "fifo", "random"], message="Must be 'balanced', 'fifo' or 'random' atm.")])
     event_id = HiddenField("Event_id")