0,1,2…n-1,n 个数中随机取 m 个数,要求 0, 1, n-1,此 n 个数每个数被取到的概率相同:

Knuth 书中的随机化方法,很容易写出:

void genkunth (int n, int m) {for (int i = 0; i < n; ++i) {if (bigrand() % (n-i) < m) {m--;cout << i << endl;}}
}

该算法的特点分析如下:

  • 当 n == m 时,if 判断式恒成立,输出的结果也恒定为 0, 1, 2, … n-1;

    • n-i 每次循环一定发生,m– 未必发生;则 n-i 一定小于 m,对 n-i 取模也必然小于 m;
  • 当 n > m 时,最坏的情况,前 n-m 次随机都不满足条件(if 均不成立),第 n-m+1 次随机必然成立;
  • 故一定可以输出 m 个随机数,
    • 当 n == m, 输出为 0, 1, 2, … n-1
    • 当 n > m, 输出 m 个有序的介于 0-n-1 之间的数;

n 中选 m —— 随机采样的艺术相关推荐

  1. Python-pcl 随机采样一致性算法

    RANSAC 随机采样一致性算法 RANSAC是一种随机参数估计算法.RANSAC从样本中随机抽选出一个样本子集,使用最小方差估计算法对这个子集计算模型参数,然后计算所有样本与该模型的偏差,在使用一个 ...

  2. 随机采样池化--S3Pool: Pooling with Stochastic Spatial Sampling

    S3Pool: Pooling with Stochastic Spatial Sampling CVPR2017 https://github.com/Shuangfei/s3pool 本文将常规池 ...

  3. 机器学习中的数据不平衡问题----通过随机采样比例大的类别使得训练集中大类的个数与小类相当,或者模型中加入惩罚项...

    机器学习中的数据不平衡问题 摘自:http://wap.sciencenet.cn/blogview.aspx?id=377102 最近碰到一个问题,其中的阳性数据比阴性数据少很多,这样的数据集在进行 ...

  4. ML之FE:数据随机抽样之利用pandas的sample函数对超大样本的数据集进行随机采样,并另存为csv文件

    ML之FE:数据随机抽样之利用pandas的sample函数对超大样本的数据集进行随机采样,并另存为csv文件 目录 数据随机抽样之利用pandas的sample函数对超大样本的数据集进行随机采样,并 ...

  5. 5.7 随机采样最小二乘法

    5.7 随机采样最小二乘法 如果万一出现差错,又难以检测出,则强影响点影响很大,此时可以采用一种随机方法,尽量避免差错带来的影响. 随机最小二乘法不采用所有测量数据,而是随机抽取部分测量数据,根据这些 ...

  6. 最小二乘法以及RANSAC(随机采样一致性)思想及实现

    线性回归–最小二乘法(Least Square Method) 线性回归: 什么是线性回归? 举个例子,某商品的利润在售价为2元.5元.10元时分别为4元.10元.20元, 我们很容易得出商品的利润与 ...

  7. 【python】随机采样的两种方法

    python中需要在一定区间内进行采样,或是对生成的数据进行采样,可以利用随机模块random.sample()函数或者numpy.random.choice()函数实现. 1.随机采样 如果需要对某 ...

  8. 设置随机种子之后,网络训练结果仍然不同的解决方法(针对随机采样的数据集)torch设置随机种子,num_worker对数据采样的影响。

    网络训练结果无法复现 设置随机种子 应该为torch, numpy,以及Python设置随机种子,并提高torch卷积精度. def set_seed(seed):random.seed(seed)n ...

  9. 一种推理优化新思路,对特征图进行[随机采样-插值]

    分享一篇ECCV 2020 的论文:Spatially Adaptive Inference with Stochastic Feature Sampling and Interpolation 论文 ...

最新文章

  1. Transformers 研究指南
  2. linux中probe函数传递参数的寻找(下)
  3. parted--大于2T的分区工具
  4. C语言第一行为N以下N行,C语言每日小练(四)——勇者斗恶龙
  5. python目录遍历_python文件操作之目录遍历实例分析
  6. 「第六篇」对于电赛,我们应该看重什么?
  7. java数组转换成string_java面试复习重点:类的管理及常用工具,教你抓住面试重点
  8. Ubuntu 14.04 文件服务器--samba的安装和配置
  9. LeetCode MySQL 1747. 应该被禁止的Leetflex账户
  10. java colormodel_ColorModel
  11. java 二进制是什么类型_Java基础类型与其二进制表示
  12. ubuntu下c++中base64编解码测试和图片编解码测试
  13. [转帖]java必备的开发知识和技能
  14. [原创]性能测试工程师试题
  15. 基于Android平台的x264的移植与应用(一):移植篇
  16. 使用SpringCloud实现Java分布式开发【part-2】:Ribbon负载均衡的介绍及使用方式
  17. 天涯红旗linux,红旗linux安装中的几点技巧(转载)
  18. Arcgis4js实现链家找房的效果
  19. 【BAT】BAT 阶段技能汇总:全功能小程序
  20. 编程序找出1000之内的所有完数,并输出其因子

热门文章

  1. linux gns3使用教程,Linux下GNS3报错解决方法
  2. 5.3 同步操作和强制排序
  3. 二、RabbitMQ常用交换器
  4. Java复习总结(一)思维导图
  5. mapreduce阶段出现pending的原因及解决
  6. 配置多台机器SSH相互通信信任
  7. Caused by: java.sql.SQLException: Unable to open a test connection to the given database报错无法打开到给定数据库
  8. librdkafka介绍文档
  9. 安装torchvision时,报错error: command ‘aarch64-linux-gnu-gcc‘ failed with exit status 1
  10. Linux内核设计与实现