Как перемешать массив в псевдослучайной последовательности?
Добрый день!
Представим, что у нас есть две сущности, например, статьи (статья А и статья Б)
У каждой статьи есть массив хэштегов (если статьи принадлежат к одной теме, то массивы хэштегов идентичны, если к разным - различны), в нашем случае статья А и статья Б относятся к одной теме
Есть необходимость перемешивать каждый массив псевдослучайным образом, таким, чтобы на странице статьи А всегда отображались хэштеги в одном порядке, а на странице статьи Б отображались хэштеги другом порядке. То есть алгоритм случайного перемешивания должен всегда возвращать одинаковое перемешивание для одной и той же статьи, но может возвращать разные для разных статей.
Соответственно для статей из разных тем, массивы будут отличаться, но принцип одинакового перемешивания для одной и той же статьи должен сохраняться
Очевидно, здесь не подойдет сортировка массива по рандомно сгенерированным числам
Была мысль генерировать числа на основе уникального идентификатора статьи (id вида 2613221) и сортировать по ним, но не совсем понятно, как это сделать, учитывая то, что длина массива хэштегов неизвестна
Какие могут быть еще варианты?
Генератор случайных чисел и так работает на основе некоего стартового значения (seed). Так что если вы ему скормите ID статьи, он ван наштампует всегда одинаковый, но случайный набор чисел.
Wataru , а можете привести какой-то пример, как инициализировать генератор случайных чисел номером статьи?
я просто кроме Math.Random() ничем не пользовалась, но у него, насколько, я знаю нельзя задать стартовое значение, и вообще нет метода наподобие random.seed() в Python
и использовать стороннюю ф-ю нет возможности(
с хешами вряд ли получится что-то сделать, у хэштегов нет id