Подпрограмма библиотеки shuffle
позволяет вам указать источник случайных чисел (если вы этого не сделаете, он будет использовать встроенное значение по умолчанию).Итак, теоретически, если у вас есть лучший источник случайных чисел - может быть, что-то, связанное со счетчиком Гейгера или радиостанцией «белого шума», или что-то, получающее числа из random.org - вы можете использовать это вместо этого.Возможно, более полезно, если вы тестируете, вы можете подключить источник, который возвращает ту же последовательность чисел, что обеспечит повторяемость вашего теста и всегда генерирует один и тот же случайный случай каждый раз.
Вы теоретически может разработать подпрограмму для случайных чисел, которая позволит вам точно контролировать, сколько тасует перетасовка;но это означает, что вам нужно точно знать, как работает shuffle
и какие цифры вам нужно вернуть, чтобы «направить» ваши результаты туда, куда они хотят попасть.Теоретически ... это не слишком сложно, используемый алгоритм очень хорошо документирован (Фишер-Йейтс), и во время вызова он генерирует n-1
случайных чисел, первым выбирая элемент из индекса от 0 до n-1,поменять местами с последним элементом, вторым выбрать элемент от 0 до индекса n-2, поменять местами с последним, но одним элементом, и так далее.Так что да, вы могли бы использовать это для управления перемешиванием, как пример @JohanLundberg, который заставляет перемешивание переключаться - но было бы очень сложно использовать это для управления перемешиванием (так какна каждой итерации все исходные данные перепрыгивают).
Короткий ответ, если вам нужны определенные ограничения на случайное перемешивание, например, «только поменять местами соседние элементы» - вам лучше реализовать свои собственные, возможно,используя исходный код в случайном порядке.