今天在写一个随机生成稀疏向量的程序的时候,看到matlab中用randperm()函数,例如:

>> randperm(4)

ans =

     1     4     3     2

randprem(4)就是生成1~4之间的不重复的随机数,当然我们可以理解为将1~4之间的4个整数的顺序随机打乱。

那么我就在想python中是否有类似的函数呢?

还真的找到替代方案了,那就是标准库random中的一个函数:random.sample

import random
list = [0,1,2,3,4]
rs = random.sample(list, 2)
print(rs)
print(list)

输出:

[3, 4]
[0, 1, 2, 3, 4]

可见random.sample用于截取列表的指定长度的随机数,但是不会改变列表本身的排序。

因此我们要生成0~N之间的不重复的指定长度L的随机整数,可以使用:random.sample(range(0, N), L),例如我要生成0~20之间的20个随机整数:

a = random.sample(range(0, 20), 20)
>>> a
[9, 12, 11, 7, 8, 10, 6, 13, 2, 16, 0, 1, 14, 18, 4, 15, 3, 19, 17, 5]

Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐