等概率自然就是每个数被选中的概率为:

p=mN

p=\frac mN
通过 if 条件判断,以及 rand() 随机数产生器,我们可轻易产生这样的概率判断:

float p = m/float(N);
if (rand()/float(RAND_MAX) < p)
{...
}

在 N≫mN \gg m 的情况下,我们可实现一种简易版的随机数生成器:

int m, N = 10, 1000;
float p = float(m)/N;
for (int i = 0; i < N; ++i)if (float(rand())/RAND_MAX < p && --m >= 0)cout << i << endl;

大名鼎鼎的 Knuth 给出了一种更为优雅的实现:

void knuth(int n, int m)
{srand((unsigned int)time_t(0));for (int i = 0; i < n; ++i)if (rand()%(n-i) < m){cout << i << endl;--m;        }
}

if (rand()%N < m)就表示以 m/N 的概率成立;

mN=if (rand() % N < m)

\frac mN=\text{if (rand() % N

Tricks(二十)—— 从 N 个数中等概率地产生 M 个数相关推荐

  1. 从N个数中等概率打印M个数

    题目:给定一个长度为N且没有重复元素的数组arr和一个整数m,实现函数等概率随机打印arr中的M个数. 要求: 相同的数不要重复打印        时间复杂度O(M),空间复杂度O(1)       ...

  2. 输出一百,十万,一百万,一千万,一亿,十亿,二十亿以内的所有质数的方法,个数和优化后的运行时间对比

    package cn.king;public class test1 {public static void main(String[] args) {int k = 0;long startTime ...

  3. matlab二维相关随机变量样本点,MATLAB自学笔记(二十二):概率统计1

    一.产生随机变量 1.二项分布的随机数据的产生(binornd) R = binornd(N, P) R = binornd(N, P, m, n,-) R = binornd(N, P, [m, n ...

  4. OpenCV学习笔记(二十一)——绘图函数core OpenCV学习笔记(二十二)——粒子滤波跟踪方法 OpenCV学习笔记(二十三)——OpenCV的GUI之凤凰涅槃Qt OpenCV学习笔记(二十

    OpenCV学习笔记(二十一)--绘图函数core 在图像中,我们经常想要在图像中做一些标识记号,这就需要绘图函数.OpenCV虽然没有太优秀的GUI,但在绘图方面还是做得很完整的.这里就介绍一下相关 ...

  5. OpenCV学习(二十二) :反向投影:calcBackProject(),mixChannels()

    OpenCV学习(二十二) :反向投影:calcHist(),minMaxLoc(),compareHist() 参考博客: 反向投影backproject的直观理解 opencv 反向投影 颜色直方 ...

  6. 知识图谱论文阅读(八)【转】推荐系统遇上深度学习(二十六)--知识图谱与推荐系统结合之DKN模型原理及实现

    学习的博客: 推荐系统遇上深度学习(二十六)–知识图谱与推荐系统结合之DKN模型原理及实现 知识图谱特征学习的模型分类汇总 知识图谱嵌入(KGE):方法和应用的综述 论文: Knowledge Gra ...

  7. 机器学习中的数学——距离定义(二十):相对熵(Relative Entropy)/KL散度(Kullback-Leibler Divergence)

    分类目录:<机器学习中的数学>总目录 相关文章: · 距离定义:基础知识 · 距离定义(一):欧几里得距离(Euclidean Distance) · 距离定义(二):曼哈顿距离(Manh ...

  8. JAVA基础知识总结:一到二十二全部总结

    >一: 一.软件开发的常识 1.什么是软件? 一系列按照特定顺序组织起来的计算机数据或者指令 常见的软件: 系统软件:Windows\Mac OS \Linux 应用软件:QQ,一系列的播放器( ...

  9. 数据与广告系列二十六:知识迁移的Embedding应用,智能化定向的解药

    作者·黄崇远 『数据虫巢』 全文共4348字 题图ssyer.com " 效果广告后定向时代,虽有千般万难,我们一样还得解决定向智能的问题." 需要提前说明的是,这一篇会涉及到本系 ...

最新文章

  1. 前端那些事之weex
  2. 北斗导航 | ION GNSS+ 2021、 ION GNSS+ 2020会议论文下载:ION 美国导航学会
  3. python 时间差计算
  4. Highcharts的使用
  5. 67 SD配置-交货凭证配置-分配 SD 查找过程/激活检查
  6. NSByteCountFormatter
  7. 小米集团公布新任CFO人选:系原瑞信亚太区高管
  8. Linux下逻辑卷LVM的管理和RAID磁盘阵列
  9. CentOS之安装Netcore运行hellowworld
  10. IO负载高的来源定位 IO系列
  11. Java基础:接口多态的综合案例 —— 笔记本电脑
  12. u盘遭受蠕虫 特洛伊木马攻击文件隐藏的解决办法
  13. 30行代码实现微信自动回复机器人
  14. 推荐一个Spring Cloud Alibaba 的代码生成器项目
  15. 用MATLAB实现高斯投影正反算且画出高斯投影图形
  16. NPC内网穿透教程-入门
  17. 【金融大屏项目】—— Echarts水滴图(echarts-liquidfill)
  18. 移动端网页开发(一)
  19. HTML期末大作业: 学生个人网页设计作品 学生个人网页模板 简单个人主页成品 个人网页制作 HTML学生个人网站作业设计代做...
  20. 热搜第一除了本科生月均5千工资,还告诉了我们什么?

热门文章

  1. 六、Mysql体系架构、存储引擎、临时表
  2. 设计模式(二)构建型模式
  3. oracle表单独创建完成之后,在加备注语法
  4. 南宁二中三中高考2021成绩查询,2020年南宁二中三中录取总成绩不低于A
  5. 在access窗体中加图片_如何在Access窗体中显示指定路径的图片
  6. VS2015+OpenCV3.4.5+QT5.12+WINDOWS10用c++调用tensorflow训练好的.pb文件图像检测
  7. 画圆角 - HTML5 Canvas 作图
  8. [leetcode-117]填充每个节点的下一个右侧节点指针 II
  9. 物理综合:Compile
  10. python全栈 操作系统