Add macro for shuffling an array.
authorbatt <batt@38d2e660-2303-0410-9eaa-f027e97ec537>
Fri, 26 Sep 2008 22:24:36 +0000 (22:24 +0000)
committerbatt <batt@38d2e660-2303-0410-9eaa-f027e97ec537>
Fri, 26 Sep 2008 22:24:36 +0000 (22:24 +0000)
git-svn-id: https://src.develer.com/svnoss/bertos/trunk@1860 38d2e660-2303-0410-9eaa-f027e97ec537

bertos/cfg/macros.h

index 69c404851c14b107709b3e7f8e3bfe6ac66049dc..abf2057d5308d43d56593d60d0d8ed2c642ac5c4 100644 (file)
 
 #endif /* COMPILER_TYPEOF */
 
+/**
+ * Shuffle the content of \a array that counts \a len elements.
+ */
+#define SHUFFLE(array, len) \
+       do { \
+               int i, j; \
+               for (i = (len) - 1; i > 0; i--) \
+               { \
+                       j = ((i + 1) * (rand() / (RAND_MAX + 1.0))); \
+                       SWAP((array)[i], (array)[j]); \
+               } \
+       } while (0)
+
 /**
  * Macro to swap \a a with \a b, with explicit type \a T for dumb C89 compilers.
  *