Randomising the order of the returned posts in a WordPress query is easy – simply add
'orderby' => 'rand' to the arguments and you’re good to go – this is great, until you need to paginate the results. As soon as you navigate to the second page of the results, the posts are returned randomly once again and you get an entirely different set of posts that may or may not contain posts that you have already viewed – if you’ve experienced this before then you’ll know exactly how frustrating it can be. The first thing we need to do is make sure our PHP session is initiated and then we can use the
'posts_orderby' filter to handle the persistent randomisation.
“Display posts in a random order, but retain persistent pagination is a post from: wpsnipp.com – WordPress Snippets, Code, Hacks, 615+ for your wordpress theme or blog.