用Python随机排列数组
假设我们有一个数组A,我们必须洗净一组没有重复的数字。因此,如果输入类似于[1,2,3],则对于改组,它将为[1,3,2],在重置后,如果再次进行改组,则为[2,3,1]
为了解决这个问题,我们将遵循以下步骤-
会有不同的方法。这些都是
init()
,reset()
,shuffle()
。这些将如下所示-初始化将像-
原始:=给定数组的副本
temp:= nums
index:=从0到nums – 1的数字列表
在
reset()
将返回原始数组该
shuffle()
会像-如果temp的长度为0,则返回空数组
i:=从索引数组中随机选择一个索引,j:=从索引数组中随机选择另一个索引
交换索引i和j中存在的元素
返回温度
另一个被称为
getAllPermutation()
num的方法,i,最初i = 0,就像-curr:=我
如果i = nums的长度,则
将nums数组的副本插入另一个称为all的数组中
返回
对于j:= curr到nums的长度
在索引j处交换元素并从num产生
调用getAllPermutation(nums,curr + 1)
在索引j处交换元素并从num产生
让我们看下面的实现以更好地理解-
示例
import randomclass Solution(object):
def __init__(self, nums):
self.original = [x for x in nums]
self.temp = nums
self.indices = [x for x in range(len(nums))]
def reset(self):
return self.original
def shuffle(self):
if not len(self.temp):
return []
i = random.choice(self.indices)
j = random.choice(self.indices)
self.temp[i], self.temp[j] = self.temp[j], self.temp[i]
return self.temp
ob = Solution([1,2,3])
print(ob.shuffle())
print(ob.reset())
print(ob.shuffle())
输入值
Initialize with [1,2,3] , then call shuffle(), reset() and shuffle()
输出结果
[2, 1, 3][1, 2, 3]
[2, 3, 1]
以上是 用Python随机排列数组 的全部内容, 来源链接: utcz.com/z/322021.html