生成忽略选定值的随机数组
Generate a random array ignoring a selected value
在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]
)
方法是:
- 你有一个列表
- 你有第一个号码
- 从列表中删除号码
- 洗牌
希望这对您有所帮助 -
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)
听起来您确实在寻找 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)
在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]
)
方法是:
- 你有一个列表
- 你有第一个号码
- 从列表中删除号码
- 洗牌
希望这对您有所帮助 -
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)
听起来您确实在寻找 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)