// Init an array with set 1, 2, and 3.
int[] nums = {1,2,3};
Solution solution = new Solution(nums);
// Shuffle the array [1,2,3] and return its result. Any permutation of [1,2,3] must equally likely to be returned.
solution.shuffle();
// Resets the array back to its original configuration [1,2,3].
solution.reset();
// Returns the random shuffling of array [1,2,3].
solution.shuffle();
classSolution(object):def__init__(self,nums):""" :type nums: List[int] :type size: int """self.orig=nums[:]self.shuffled_nums=nums[:]defreset(self):""" Resets the array to its original configuration and return it. :rtype: List[int] """self.shuffled_nums=self.orig[:]returnself.origdefshuffle(self):""" Returns a random shuffling of the array. :rtype: List[int] """n=len(self.shuffled_nums)foriinrange(n):newindex=random.randint(0,i)self.shuffled_nums[i],self.shuffled_nums[newindex]=self.shuffled_nums[newindex],self.shuffled_nums[i]returnself.shuffled_nums# Your Solution object will be instantiated and called as such:# obj = Solution(nums)# param_1 = obj.reset()# param_2 = obj.shuffle()