随机序列和随机位置?

时间:2017-04-15 19:19:14

标签: python numpy random sequence

我知道如何生成数字列表的随机序列。这是一个例子:

lst = np.arange(10) #lst always 0 .. n
np.shuffle(lst)

问题是如何对数字进行随机排列,使得数字ONE不在位置ONE,2不在位置2,并且通常x不在位置x。对于所有0 .. n。

初始序列始终为0 .. n,其中n将为数百,100或200或300。

看了一下线程......洗牌方法似乎无法使用,太慢了。 这是我目前的实验,到目前为止似乎有效:

def swap(ary,pos):
  new_pos = np.random.randint(pos+1, len(ary))
  tmp = ary[pos]
  ary[pos] = ary[new_pos]
  ary[new_pos] = tmp
  #print "%s <=> %s" % (pos, new_pos)

def derange(n):
  lst = np.arange(n)
  for i in np.arange(n-1) : swap(lst, i)
  return lst 

0 个答案:

没有答案