Я ищу самый быстрый алгоритм для выполнения следующей задачи. У меня есть некоторый массивСоздание всех возможных разделов
[а, b, c ...]
и мне нужно, чтобы сгенерировать столь же случайный массив массивов, содержащий все элементы основного массива, что-то вроде этого:
Input [1 2 3 4 5 ] => [ [1 2 ] [3 4 ] [ 5 ] ]
Решение Straitforward заключается в создании всех разделов и случайном выборе одного из них. Это решение гарантирует, что все расщепления будут выбраны с равной вероятностью. Но это слишком медленно для больших чисел. Есть ли другая возможность создать это расщепление?
Вам нужно разделить предметы в начале? если нет, вы можете сделать это, когда это необходимо. он может сохранять как пространство, так и время. предположим, что вам нужно разделить массив с 3-элементными подмассивами, когда вам нужен какой-то случайный элемент внутри, вы можете просто сгенерировать 'x = rand% (n/3)' и получить элементы в 'x * 3',' x * 3 + 1', 'x * 3 + 2'. это просто решение для случая, когда они не нужны все в начале. – meth