Tricks(二十)—— 从 N 个数中等概率地产生 M 个数
等概率自然就是每个数被选中的概率为:
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 的概率成立;
\frac mN=\text{if (rand() % N
Tricks(二十)—— 从 N 个数中等概率地产生 M 个数相关推荐
- 从N个数中等概率打印M个数
题目:给定一个长度为N且没有重复元素的数组arr和一个整数m,实现函数等概率随机打印arr中的M个数. 要求: 相同的数不要重复打印 时间复杂度O(M),空间复杂度O(1) ...
- 输出一百,十万,一百万,一千万,一亿,十亿,二十亿以内的所有质数的方法,个数和优化后的运行时间对比
package cn.king;public class test1 {public static void main(String[] args) {int k = 0;long startTime ...
- matlab二维相关随机变量样本点,MATLAB自学笔记(二十二):概率统计1
一.产生随机变量 1.二项分布的随机数据的产生(binornd) R = binornd(N, P) R = binornd(N, P, m, n,-) R = binornd(N, P, [m, n ...
- OpenCV学习笔记(二十一)——绘图函数core OpenCV学习笔记(二十二)——粒子滤波跟踪方法 OpenCV学习笔记(二十三)——OpenCV的GUI之凤凰涅槃Qt OpenCV学习笔记(二十
OpenCV学习笔记(二十一)--绘图函数core 在图像中,我们经常想要在图像中做一些标识记号,这就需要绘图函数.OpenCV虽然没有太优秀的GUI,但在绘图方面还是做得很完整的.这里就介绍一下相关 ...
- OpenCV学习(二十二) :反向投影:calcBackProject(),mixChannels()
OpenCV学习(二十二) :反向投影:calcHist(),minMaxLoc(),compareHist() 参考博客: 反向投影backproject的直观理解 opencv 反向投影 颜色直方 ...
- 知识图谱论文阅读(八)【转】推荐系统遇上深度学习(二十六)--知识图谱与推荐系统结合之DKN模型原理及实现
学习的博客: 推荐系统遇上深度学习(二十六)–知识图谱与推荐系统结合之DKN模型原理及实现 知识图谱特征学习的模型分类汇总 知识图谱嵌入(KGE):方法和应用的综述 论文: Knowledge Gra ...
- 机器学习中的数学——距离定义(二十):相对熵(Relative Entropy)/KL散度(Kullback-Leibler Divergence)
分类目录:<机器学习中的数学>总目录 相关文章: · 距离定义:基础知识 · 距离定义(一):欧几里得距离(Euclidean Distance) · 距离定义(二):曼哈顿距离(Manh ...
- JAVA基础知识总结:一到二十二全部总结
>一: 一.软件开发的常识 1.什么是软件? 一系列按照特定顺序组织起来的计算机数据或者指令 常见的软件: 系统软件:Windows\Mac OS \Linux 应用软件:QQ,一系列的播放器( ...
- 数据与广告系列二十六:知识迁移的Embedding应用,智能化定向的解药
作者·黄崇远 『数据虫巢』 全文共4348字 题图ssyer.com " 效果广告后定向时代,虽有千般万难,我们一样还得解决定向智能的问题." 需要提前说明的是,这一篇会涉及到本系 ...
最新文章
- 前端那些事之weex
- 北斗导航 | ION GNSS+ 2021、 ION GNSS+ 2020会议论文下载:ION 美国导航学会
- python 时间差计算
- Highcharts的使用
- 67 SD配置-交货凭证配置-分配 SD 查找过程/激活检查
- NSByteCountFormatter
- 小米集团公布新任CFO人选:系原瑞信亚太区高管
- Linux下逻辑卷LVM的管理和RAID磁盘阵列
- CentOS之安装Netcore运行hellowworld
- IO负载高的来源定位 IO系列
- Java基础:接口多态的综合案例 —— 笔记本电脑
- u盘遭受蠕虫 特洛伊木马攻击文件隐藏的解决办法
- 30行代码实现微信自动回复机器人
- 推荐一个Spring Cloud Alibaba 的代码生成器项目
- 用MATLAB实现高斯投影正反算且画出高斯投影图形
- NPC内网穿透教程-入门
- 【金融大屏项目】—— Echarts水滴图(echarts-liquidfill)
- 移动端网页开发(一)
- HTML期末大作业: 学生个人网页设计作品 学生个人网页模板 简单个人主页成品 个人网页制作 HTML学生个人网站作业设计代做...
- 热搜第一除了本科生月均5千工资,还告诉了我们什么?
热门文章
- 六、Mysql体系架构、存储引擎、临时表
- 设计模式(二)构建型模式
- oracle表单独创建完成之后,在加备注语法
- 南宁二中三中高考2021成绩查询,2020年南宁二中三中录取总成绩不低于A
- 在access窗体中加图片_如何在Access窗体中显示指定路径的图片
- VS2015+OpenCV3.4.5+QT5.12+WINDOWS10用c++调用tensorflow训练好的.pb文件图像检测
- 画圆角 - HTML5 Canvas 作图
- [leetcode-117]填充每个节点的下一个右侧节点指针 II
- 物理综合:Compile
- python全栈 操作系统