随机重拍与抽样(random_shuffle,random_sample,random_sample_n)
random_shuffle
- 随机重排[first,last)中的数据,有N!中可能,N=last-first,此算法会产生一种均匀分布,任何特定排列顺序被选中的几率为1/N!,版本二是一种特别的function object,当被引数传进来,传递方式是by reference,而不是by value,因为RandomNumberGenerator的重要特点是具有局部状态,每次被调用时被改变。
- 使用乱数时,能够明白设定乱数产生器的种子是非常重要的,如果这对程序重要,则使用第二个版本。
template <class RandomAccessIterator>
inline void random_shuffle(RandomAccessIterator first, RandomAccessIterator last)
{
if(first != last)
for(RandomAccessIterator i = first + ; i != last; ++i)
iter_swap(i, first + (rand() % ((i - first) + )));
}
inline void random_shuffle(RandomAccessIterator first, RandomAccessIterator last,RandomNumberGenerator& rand)//by reference
random_sample
- 随机的将[first,last)中的一个取样结果复制到[ofirst,olast)中,它会复制n个元素,n为min(last-first,olast-ofirst),Input range中的每个元素至多在Output range中出现一次,该结果以均匀方式选出
- 返回值为ofirst+n
- 对于N个元素,忽略元素顺序,欲选出n个元素,共有N!/(n!(N-n)!)中方法,本算法会产生均匀分布的结果,任何特定的元素被选出的几率为n/N,任何特定取样(不考虑元素顺序)几率为n!(N-n)!/N!
- 第一个版本用内部自定义的乱数产生器,第二个版本用自己定义的function object的乱数产生器
- Input range必须是Forward Iterator,Output range必须是RandomAccessIterator,所以Output range中元素的性对顺序不一定会与Input ragne中的顺序相同
template <class InputerIterator,class RandomAccessIterator>
RandomAccessIterator random_sample(InputerIterator first,InputIterator last,RandomAccessIterator ofirst,RandomAccessIterator olast); template <class InputerIterator,class RandomAccessIterator>
RandomAccessIterator random_sample(InputerIterator first,InputIterator last,RandomAccessIterator ofirst,RandomAccessIterator olast,RandomNumberGenerator &rand);
random_sample_n
template <class InputerIterator,class OutputerIterator,class Distance>
OutputerIterator random_sample_n(InputerIterator first,InputIterator last,OutputerIterator out,Distance n); template <class InputerIterator,class OutputerIterator,class Distance,class RandomNumberGenerator>
OutputerIterator random_sample_n(InputerIterator first,InputIterator last,OutputerIterator out,Distance n,RandomNumberGenerator &rand);
- 从[first,last)中随机的复制元素到[out,out+n)中,他将复制m个元素,此处m为min(last-first,n),Input range中的每个元素至多在Output range中出现一次,该结果以均匀方式选出
- 返回值为out+m
- Input range必须是Forward Iterator,Output range必须是 Output Iterator,所以会保证两个容器中的相对顺序相同
随机重拍与抽样(random_shuffle,random_sample,random_sample_n)的更多相关文章
- 【C++】随机重命名MP3文件
新置MP3一件,竟然没有随机播放的功能.坑啊!身为程序媛一枚,自己动手吧~ 获取当前路径: char buf[1000]; GetCurrentDirectory(1000,buf); string ...
- 小米oj 重拍数组求最大和
重排数组求最大和 序号:#34难度:困难时间限制:1000ms内存限制:10M 描述 假设有一个n元素的数组(数组的元素索引从1开始),针对这个数组有q个查询请求,每个请求由一对整数li,ri组成, ...
- 九宫重拍(bfs + 康拓展开)
问题描述 如下面第一个图的九宫格中,放着 1~8 的数字卡片,还有一个格子空着.与空格子相邻的格子中的卡片可以移动到空格中.经过若干次移动,可以形成第二个图所示的局面. 我们把第一个图的局面记为:12 ...
- 【五一qbxt】day6 OI中的stl
from:why 很多很多part…… 1.pair: 相当于把两个变量放在一起: #include<utility> using namespace std; pair<TypeN ...
- pandas中的随机排序和抽样
1.随机重排序 使用take()随机排序 如: df.take([54]) #采取索引为54的数据 可以借助np.random.permutation()函数随机排序 permutation()函 ...
- 【机器学习实战】第7章 集成方法(随机森林和 AdaBoost)
第7章 集成方法 ensemble method 集成方法: ensemble method(元算法: meta algorithm) 概述 概念:是对其他算法进行组合的一种形式. 通俗来说: 当做重 ...
- [LeetCode] Random Pick Index 随机拾取序列
Given an array of integers with possible duplicates, randomly output the index of a given target num ...
- J.U.C JMM. pipeline.指令重排序,happen-before
pipeline: 现在的CPU一般采用流水线方式来执行指令.一个指令执行周期被分成:取值,译码,执行,访存,写会,更新PC若干阶段.然后,多条指令可以同时存在于流水线中,同时被执行,来提高系统的吞吐 ...
- Pandas排列和随机采样
随机重排序 import pandas as pd import numpy as np from pandas import Series df = pd.DataFrame(np.arange(5 ...
随机推荐
- angular自定义指令
1.在directive文件下创建指令的js文件 通常自定义指令需要声明模块(注意定义指令时, js内部指令名称需采用 aaAaBb驼峰的命名方式 html中使用的是aa-aa-bb) e.g (f ...
- VCL界面控件DevExpress VCL Controls发布v18.2.3|附下载
DevExpress VCL Controls是 Devexpress公司旗下最老牌的用户界面套包.所包含的控件有:数据录入,图表,数据分析,导航,布局,网格,日程管理,样式,打印和工作流等,让您快速 ...
- Java基础知识补充
基础知识总结: 学习了一段时间,重新看了孤傲苍狼的博客,对一些知识有了新的理解. unicode: 全球的文字放到计算机里面表示全是0和1,Unicode是统一了全世界国家文字的一种编码方式,用这样的 ...
- hdu5335(bfs,贪心)
In an n∗mn∗m maze, the right-bottom corner is the exit (position (n,m)(n,m) is the exit). In every p ...
- python flask大型项目目录
Hello World 作者背景 应用程序简介 要求 安装 Flask 在 Flask 中的 “Hello, World” 下一步? 模板 回顾 为什么我们需要模板 模板从天而降 模板中控制语句 模板 ...
- Android大作业 --音乐播放器
1.项目成员(本次作业主要对上一次的音乐播放器进行完善) 韦家城 学号:1600802026 班级:161 博客:https://www.cnblogs.com/ln9969cc/ 邓乾尧 学号:1 ...
- SSM整合框架实现ajax校验
SSM整合框架实现ajax校验 刚学习了ssm框架,ajax校验成功,分享下 1.导入jar包
- Python学习笔记第十六周
目录: 一.CSS补充 1.页面布局 二.JavaScript补充 1.条件判断 2.函数分类 3.序列化 4.转义 5.eval 6.时间 7.作用域 三.DOM 1.间接查找 文本操作 样式操作 ...
- 会话执行存储过程,等待被阻塞,Kill session场景模拟
本次场景来源: 通知某个会话:执行execute addupp(1,'five');类似的存储过程,会话等待:(会话等待两种情况:一种确实执行,但是未完成:另一种就是执行的操作无法获取资源,等待资源释 ...
- i.MX6 设备树 GPIO 默认值
/********************************************************************** * i.MX6 设备树 GPIO 默认值 * 说明: * ...