Index: libs/libmythui/mythmainwindow.cpp
===================================================================
--- libs/libmythui/mythmainwindow.cpp	(revision 27220)
+++ libs/libmythui/mythmainwindow.cpp	(working copy)
@@ -1041,6 +1041,9 @@
     RegisterKey("Global", "PASTE", QT_TRANSLATE_NOOP("MythControls",
         "Paste text into textedit"), "Ctrl+V");
 
+    RegisterKey("Global", "RANDOM", QT_TRANSLATE_NOOP("MythControls",
+        "Jump to a random choice"), "R,F12");
+
     RegisterKey("Global", "0", QT_TRANSLATE_NOOP("MythControls","0"), "0");
     RegisterKey("Global", "1", QT_TRANSLATE_NOOP("MythControls","1"), "1");
     RegisterKey("Global", "2", QT_TRANSLATE_NOOP("MythControls","2"), "2");
Index: libs/libmythui/mythuibuttonlist.h
===================================================================
--- libs/libmythui/mythuibuttonlist.h	(revision 27220)
+++ libs/libmythui/mythuibuttonlist.h	(working copy)
@@ -6,6 +6,8 @@
 #include <QString>
 #include <QVariant>
 
+#include <cstdlib>
+
 #include "mythuitype.h"
 #include "mythuiimage.h"
 #include "mythuitext.h"
@@ -157,6 +159,7 @@
 
     virtual bool MoveDown(MovementUnit unit = MoveItem, uint amount = 0);
     virtual bool MoveUp(MovementUnit unit = MoveItem, uint amount = 0);
+    bool MoveToRandom();
     bool MoveToNamedPosition(const QString &position_name);
 
     void RemoveItem(MythUIButtonListItem *item);
Index: libs/libmythui/mythuibuttonlist.cpp
===================================================================
--- libs/libmythui/mythuibuttonlist.cpp	(revision 27220)
+++ libs/libmythui/mythuibuttonlist.cpp	(working copy)
@@ -1920,6 +1920,23 @@
     return true;
 }
 
+bool MythUIButtonList::MoveToRandom()
+{
+    if (!m_initialized)
+        Init();
+
+    if (m_selPosition < 0 || m_itemList.isEmpty() || !m_initialized)
+        return false;
+
+    int newPosition = random() % m_itemList.size();
+
+    if (m_selPosition == newPosition)
+        return false;
+
+    SetItemCurrent(newPosition);
+    return true;
+}
+
 bool MythUIButtonList::MoveToNamedPosition(const QString &position_name)
 {
     if (!m_initialized)
@@ -2184,6 +2201,10 @@
         {
             MoveDown(MoveMax);
         }
+        else if (action == "RANDOM")
+        {
+            MoveToRandom();
+        }
         else if (action == "SELECT")
         {
             MythUIButtonListItem *item = GetItemCurrent();
