diff --git a/lib/modules/Array.pmod b/lib/modules/Array.pmod
index 381d3b96f9857710c7f8d669bb6a356e9cca0105..37248e3bd9cb6c84bd69a3ae4342f61209ff3ed6 100644
--- a/lib/modules/Array.pmod
+++ b/lib/modules/Array.pmod
@@ -59,6 +59,21 @@ mixed filter(mixed arr, mixed fun, mixed ... args)
   }
 }
 
+array shuffle(array arr)
+{
+  int i = sizeof(arr);
+
+  while(i) {
+    int j = random(i--);
+    if (j != i) {
+      mixed tmp = arr[i];
+      arr[i] = arr[j];
+      arr[j] = tmp;
+    }
+  }
+  return(arr);
+}
+
 
 int search_array(mixed *arr, mixed fun, mixed ... args)
 {