Список товаров, отображаемый шорткодом [products] и подобными, кэшируется по соображениям производительности. Когда используется orderby=rand, кэшируется несколько наборов случайно сгенерированных продуктов, а затем, при каждой загрузке страницы, WooCommerce случайным образом выбирает один из наборов.
По умолчанию WooCommerce кэширует шесть различных наборов продуктов. Вы можете использовать фильтр woocommerce_product_query_max_rand_cache_count, чтобы изменить это число.