I had to combine the other two answers here to get this to work, so here's a complete answer with explanation and code from the linked 2011 email.
We will use org-sort (C-c ^), which can use an arbitrary function for its sort algorithm. In emacs 28 and later, we also have to supply a function to use to compare the outputs of the sort algorithm. We will use the less-than function, <.
- Define a sort function
(defun my-org-random-sort ()
(random 1000))
It probably matters what number you put, but the email thread suggested 1000 and I haven't tried anything else.
- At the subtree/table/list you want to randomize, type:
C-c ^ f my-org-random-sort <