[libc++] Unspecified behavior randomization in libc++

This effort is dedicated to deflake the tests of the users which depend
on the unspecified behavior of algorithms and containers. This also
might help updating the sorting algorithm in libcxx which has the
quadratic worst case in the future or at least create a new one under
flag.

For detailed design, please see the design doc I provide in the patch.

Differential Revision: https://reviews.llvm.org/D96946

NOKEYCHECK=True
GitOrigin-RevId: a45d2287adf7942a26be02193731701e61eda7b4
diff --git a/docs/ReleaseNotes.rst b/docs/ReleaseNotes.rst
index 62e5a0c..11c7798 100644
--- a/docs/ReleaseNotes.rst
+++ b/docs/ReleaseNotes.rst
@@ -51,6 +51,10 @@
   added. This is useful for building libc++ in an embedded setting, and it adds itself to the various
   freestanding-friendly options provided by libc++.
 
+- ``_LIBCPP_DEBUG`` equals to ``1`` enables the randomization of unspecified
+  behavior of standard algorithms (e.g. equal elements in ``std::sort`` or
+  randomization of both sides of partition for ``std::nth_element``)
+
 API Changes
 -----------