python生成不重复随机数和对list乱序的解决方法

下面为大家分享一篇python生成不重复随机数和对list乱序的解决方法,具有很好的参考价值,希望对大家有所帮助。

andom.sample(list, n)即是从list中随机选取n个不同的元素

# -*- coding: utf-8 -*- import random # 从一个list中随机挑选5个 list = [12, 23, 13, 14, 78, 234, 123, 12345] randomlist = random.sample(list, 5) print randomlist  # 在range(10)中随机生成5个不重复的数,可以作为随机下标集合,然后到list中取数 len = list.__len__() indexList = range(len) randomIndex = random.sample(indexList, 5) for i in randomIndex:  print "下标为%d" % i  print list[i]

登录后复制

立即学习“Python免费学习笔记(深入)”;

对list进行洗牌,乱序排序,random.shuffle(list),注意原来的list会被改变

# -*- coding: utf-8 -*- import random # 对list洗牌,在原list上做改变 list = range(10) print list random.shuffle(list) print "随机排序列表 : ", list

登录后复制

立即学习“Python免费学习笔记(深入)”;

关于生成随机的不重复数,我被面试过两次,有一次的应用场景是抽奖。

我当时提出的解决方案是:将生成的随机数(数组的随机下标)放在一个数组中,每次对新生成的随机数首先判断是否已经存在,如果不存在就加入这个数组,如果存在就重新生成随机数,直到这个数组中的元素个数到达一个特定值,然后拿着这个随机下标数组到原数组中去取元素。面试官问我时间复杂度问我是多少,我说O(n^2),面试官问我有没有改进方案,我想了一会没想出来。

回到宿舍后舍友说,你可以每次对选中的元素和最后元素交换以下,下一次生成随机数的时候就在前n-1个元素中生成,这样每次只要交换一次元素,就不用去那个数组中判断当前下标是否已经被生成过一次,时间复杂度变成O(n),不由佩服。

Java中提供了list.contains(ele)函数,可以直接判断指定容器中是否存在某个元素,这样就不用写二重循环了,但是时间复杂度仍然是O(n^2)

不过今天看了一下python中的sample函数(随机选取种子点)直接就能达到我要的结果,下次再写抽奖函数一行代码就搞定了。

相关推荐:

python中随机取list中的元素方法

立即学习“Python免费学习笔记(深入)”;

以上就是python生成不重复随机数和对list乱序的解决方法的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2264480.html

(0)
上一篇 2025年2月27日 08:13:17
下一篇 2025年2月25日 01:31:37

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Python将DataFrame的某一列作为index的方法

    下面为大家分享一篇python将dataframe的某一列作为index的方法,有着一定的参考价值,希望对大家有所帮助。 下面代码实现了将df中的column列作为index df.set_index([“Column”], inplace…

    编程技术 2025年2月27日
    200
  • Python的str强转int时遇到的问题

    下面为大家分享一篇解决python的str强转int时遇到的问题,有着一定的参考价值,希望对大家有所帮助。 数字字符串前后有空格没事: >>> print(int(” 3 “))3登录后复制 立即学习“Python免费学习…

    编程技术 2025年2月27日
    200
  • python操作二维数组画图

    这次给大家带来python操作二维数组画图,python操作二维数组画图的注意事项有哪些,下面就是实战案例,一起来看一下。 1、二维数组取值 注:不管是二维数组,还是一维数组,数组里的数据类型要一模一样,即若是数值型,全为数值型 #二维数组…

    编程技术 2025年2月27日
    200
  • Python中关于strip使用方法的小妙招

    本篇文章给大家分享的内容是Python中关于strip使用方法的小妙招,有着一定的参考价值,有需要的朋友可以参考一下 【开胃小菜】 当提到python中strip方法,想必凡接触过python的同行都知道它主要用来切除空格。有以下两种方法来…

    编程技术 2025年2月27日
    200
  • Python把二维数组输出为图片的方法

    这次给大家带来Python把二维数组输出为图片的方法,Python把二维数组输出为图片的注意事项有哪些,下面就是实战案例,一起来看一下。 对于二维数组,img_mask [[ 0 0 0 …, 7 7 7] [ 0 0 0 …, 7…

    编程技术 2025年2月27日
    200
  • 在python中numpy与array应该怎样转换

    这次给大家带来在python中numpy与array应该怎样转换,在python中numpy与array应该怎样转换的注意事项有哪些,下面就是实战案例,一起来看一下。 实例如下所示: u = array([[1,2],[3,4]])m = …

    编程技术 2025年2月27日
    200
  • Python的numpy数组怎么合并

    这次给大家带来Python的numpy数组怎么合并,Python的numpy数组合并的注意事项有哪些,下面就是实战案例,一起来看一下。 Python中numpy数组的合并有很多方法,如 – np.append() –…

    2025年2月27日
    200
  • Python之获取与简单处理金融数据

    Python的功能不可以说不大,在金融数据分析里面有着很方便的应用。本篇文章给大家分享的内容是Python之获取与简单处理金融数据,有着一定的参考价值,有需要的朋友可以参考一下 1.数据获取 pandas包中有自带的数据获取接口,详细的大家…

    2025年2月27日 编程技术
    200
  • 怎样操作Python遍历numpy数组

    这次给大家带来怎样操作Python遍历numpy数组,操作Python遍历numpy数组的注意事项有哪些,下面就是实战案例,一起来看一下。 在用python进行图像处理时,有时需要遍历numpy数组,下面是遍历数组的方法: [rows, c…

    编程技术 2025年2月27日
    200
  • Python实现求解最大公约数的方法

    这次给大家带来Python实现求解最大公约数的方法,Python实现求解最大公约数的注意事项有哪些,下面就是实战案例,一起来看一下。 先从网上摘录一段算法的描述如下: 更相减损法:也叫 更相减损术,是出自《 九章算术》的一种求最大公约数的算…

    2025年2月27日
    200

发表回复

登录后才能评论