生成忽略所选值的随机数组

时间:2015-06-07 17:19:35

标签: python arrays random

在Python中,我们可以通过以下方式创建一个0到10的随机数组:

randarray = random.sample(range(0, 10), 10)

我的问题是我要创建一个从0到10的数组,但是在第一个位置我要添加一个随机生成的数字,然后在不重复的情况下追加其余的数字。

这意味着我先做:

first_value =  random.randint(0,10)

例如,如果first_value为4,我想创建一个0到10的随机数组(不重复)但忽略数字4.例如,[0, 9, 5, 6, 1, 8, 7, 3, 2]。这是我不知道该怎么做,所以任何帮助都会非常感激。

然后我只想将first_value追加到randarray

randarray.insert(0, first value)

所以期望的输出是:[4, 0, 9, 5, 6, 1, 8, 7, 3, 2]

3 个答案:

答案 0 :(得分:5)

听起来你真的在寻找一个shuffled列表:

>>> from random import shuffle
>>> xs = range(0, 10)
>>> shuffle(xs)
>>> xs
[2, 5, 4, 7, 1, 9, 3, 0, 6, 8]

有关更一般的方法,请使用sample

>>> from random import sample
>>> xs = sample(range(0, 10), 10)

如果您确实想要单独生成头部:

>>> from random import randint, sample
>>> x = randint(0, 10)
>>> p = range(0, 10)
>>> p.remove(x)
>>> xs = [x] + sample(p, 9)

答案 1 :(得分:1)

方式是:

  1. 你有一个清单
  2. 你有第一个号码
  3. 从列表中删除号码
  4. shuffle list

答案 2 :(得分:1)

希望这有帮助 -

first_value = random.randint(0, 10)
randarray = [i for i in random.sample(range(0, 10), 10) if i != first_value]
randarray.insert(0, first_value)