美文网首页
[Python] 从m个数中随机取n个

[Python] 从m个数中随机取n个

作者: hal | 来源:发表于2019-02-14 22:19 被阅读8次

随机取的n个数字可以重复

import random

[random.randint(0,m) for _ in range(n)]

这样取出来的数字是有可能重复的,并且允许 m<n 的情况

随机取的n个数字不可以重复

import random

def get_random_list_without_repetition(m, n):
    results=[]
    while(len(results) < n)
        s = random.randint(0, m)
        if s not in results:
            results.append(s)
    return results

这个的缺点是可能效率并不高,当m与n接近时,可能会消耗大量时间,一直找不到合适的s

两个小想法

  1. 可以尝试,每找到一个数,就将这个数从原list中删除,然后重新randint
  2. 当m接近n时,效率会极大的降低,可以加一个预判
if n < m/2:
    get_random_list_without_repetition(m, n)
else:
    get_random_list_without_repetition(m, m-n)
    再求两个list的差集

相关文章

  • [Python] 从m个数中随机取n个

    随机取的n个数字可以重复 这样取出来的数字是有可能重复的,并且允许 m

  • 全排列算法的理解与实现(递归+字典序)

    一、全排列的概念 排列:   从n个数中选取m(m<=n)个数按照一定的顺序进行排成一个列,叫作从n个元素中取m个...

  • 无序排列组合的计算

    n个数中取出m个的组合数( 例如:从1,2,3,4随机取出2个数,一共有6种) 2.表示从n个元素中取出m个元素的...

  • 抢红包算法(随机数)

    公平法 红包剩余金额为 M红包剩余数量为 N 这种算法就是每次都在区间[0,M/N×2] 随机取一个数。假设100...

  • 排列组合--原理及实现

    1. 定义: 组合数:从m个不同元素中任取n(n<=m)个元素拼成一组,叫做从m中取n个元素的组合。能够取的所有可...

  • 组合

    上述代码中列出了 全组合的非递归、递归解法 从n个数中取m个的各种组合形式输出

  • 排列

    上述代码中列出了 全排列的非递归、递归解法 从n个数中取m个的各种排列形式输出

  • R统计:排列组合

    导读 排列数:从n个不同元素中取出m(m≤n)个元素的所有不同排列的个数。组合数:从n个不同元素中取出m(m≤n)...

  • 组合数算法

    一、概念 什么是组合数呢? 从m个不同元素中取出n(n≤m)个元素的所有组合的个数,叫做从m个不同元素中取出n个元...

  • TODO:排列组合问题:n个数中取m个

    TODO:排列组合问题:n个数中取m个 排列组合是组合学最基本的概念。所谓排列,就是指从给定个数的元素中取出指定个...

网友评论

      本文标题:[Python] 从m个数中随机取n个

      本文链接:https://www.haomeiwen.com/subject/dhayeqtx.html