最近在写matlab代码转c++,会遇到一些重写的函数。

复写首先要了解randperm函数在matlab中的实现机理。
以下是函数原定义:

function p = randperm(n);
%RANDPERM Random permutation.
%   RANDPERM(n) is a random permutation of the integers from 1 to n.
%   For example, RANDPERM(6) might be [2 4 5 6 1 3].
%
%   Note that RANDPERM calls RAND and therefore changes RAND's state.
%
%   See also PERMUTE.%   Copyright 1984-2002 The MathWorks, Inc.
%   $Revision: 5.10 $ $Date: 2002/04/09 00:26:14 $[ignore,p] = sort(rand(1,n));

所以代码是基于rand函数和sort函数实现的。

首先由rand函数生成随机数:

>> y=rand(1, 6)y =0.4103    0.8936    0.0579    0.3529    0.8132    0.0099

然后sort进行排序并返回排序后的元素在原数组的位置。

>> [ignore,p] = sort(y)ignore =0.0099    0.0579    0.3529    0.4103    0.8132    0.8936p =6     3     4     1     5     2

rand默认升序排序。而最小的0.0099在原数组的位置是6,所以位置数组第一个值为6。

把位置数组p返回,就得到了1到n的无序数组。

但是如果传入两个参数,randperm[a,b]
实现的是从1~a中随机产生b个不重复的整数。
而我要实现的,就是双参数的形式。

那么接下来要看c++的实现:
参照百度百科中的实现思路

#include <algorithm>
#include <vector>void randperm()
{vector<int> numbres;for (int i = 0; i < 100; i++){numbres.push_back(i);}std::random_shuffle(numbres.begin(), numbres.end());for (int j = 0; j < 10; j++){cout << numbres[j]  << endl;}
}

生成100个随机数,打乱后取前10个。即完成了从1-100中随机取10个数的功能。

除此之外,还有很多方法。

参考:
https://www.jianshu.com/p/fd23141df09a
https://www.cnblogs.com/salan668/p/3652532.html
https://blog.csdn.net/andy_songlin/article/details/6552674
https://www.cnblogs.com/afarmer/archive/2011/05/01/2033715.html

matlab 函数 c++ 复写之randperm相关推荐

  1. MATLAB函数大全 .

    http://pleasaunce.blog.sohu.com/94162301.html   网上看到的,很珍贵,怕人家删了,就自己考过来了 附录1 常用命令 附录1.1 管理用命令 函数名 功能描 ...

  2. MATLAB函数汇总

    Matlab 函数参数汇总 MATLAB函数参考 附录1.1 管理用命令 函数名 功能描述 函数名 功能描述 addpath 增加一条搜索路径 rmpath 删除一条搜索路径 demo 运行Matla ...

  3. MATLAB 函数大全

    附录1 常用命令 附录1.1 管理用命令 函数名 功能描述 函数名 功能描述 addpath 增加一条搜索路径 rmpath 删除一条搜索路径 demo 运行Matlab演示程序 type 列出.M文 ...

  4. 《数字图像处理》冈萨雷斯,Matlab函数汇总 .

    <数字图像处理>冈萨雷斯,Matlab函数汇总 . 图像显示 colorbar 显示彩条 getimage 由坐标轴得到图像数据 ice(DIPUM) 交互彩色编辑 image 创建和显示 ...

  5. 非常全的 matlab 函数

    一.常用对象操作:除了一般windows窗口的常用功能键外. 1.!dir 可以查看当前工作目录的文件. !dir& 可以在dos状态下查看. 2.who 可以查看当前工作空间变量名, who ...

  6. csapi matlab,Matlab函数csapi与papi的区别是什么

    2010-05-23 回答 matlab有多少api函数,因为数量很多,而且不同版本的函数数量也或许不一样,因为会把常用的需求去添加成新的api函数,不完全统计,matlab的api函数不少于420个 ...

  7. matlab中文函数手册,MATLAB函数参考手册.pdf

    MATLAB 函数目录 一,<MATLAB 函数速查手册>邓薇 人民邮电出版社 二,MATLAB 函数大全 依字母顺序 三, MATLAB 常用函数 依功能分类 MATLAB 函数速查手册 ...

  8. MATLAB 函数速查手册目录

      第 1 章 MATLAB 操作基础   第 2 章 矩阵及其基本运算   第 3 章 数值计算函数 第 4 章 符号运算函数 第 5 章 概率统计 第 6 章 绘图与图形处理 第 7 章 MATL ...

  9. matlab中oad什么意思,MATLAB函数参考

    MATLAB主要命令汇总: 附录1.1 管理用命令 函数名    功能描述    函数名    功能描述 addpath    增加一条搜索路径    rmpath    删除一条搜索路径 demo  ...

最新文章

  1. UVA 1376 Animal Run 最短路
  2. 【Python】list 之 extend 和 append 的区别
  3. 1276: 求和游戏
  4. 跨域技术(JSONP与CROS)
  5. thinkPHP 中去除URL中的index.php
  6. ggeditor推动_谁推动了特殊招聘的文化?
  7. 根据年月打印出该月有多少天
  8. Cisco 交换机EC 捆绑
  9. R 语言基本操作(基本信息的查看、与本地文件系统交互、编译器版本升级)
  10. Tricks(十九)—— 获得 list of lists 每一列的最大最小值
  11. grub 与grub2
  12. qt5使用触屏 偶尔没响应_【电凝推荐】适合医学生使用的笔记本电脑20200519
  13. C++——fcntl
  14. PHP中smart原则,制定目标时的SMART原则不包括什么
  15. 车载以太网网络中的时间同步
  16. c++数组、结构体数组和对象数组的初始化方式
  17. 二项分布的期望与方差的证明
  18. word如何调整字间距离_WORD如何调整行间距和字间距
  19. Html5 postmessage 子父窗口传值
  20. linux~tar压缩文件夹到指定文件夹 --- 相对路径

热门文章

  1. 【券后价27.99元】【包邮】【新疆可发】采琪采36卷本色无芯卷纸厕纸家用卫生卷筒纸...
  2. 网页拉流rtmp服务器,rtmp服务器以及rtmp推流/拉流/转发
  3. 二项逻辑斯蒂回归(逻辑回归)
  4. vbox与vmware的选择
  5. torch.flatten作用是什么
  6. 怎样取消连续包月自动续费_大会员怎么取消自动续费
  7. 2021年危险化学品经营单位安全管理人员考试题库及危险化学品经营单位安全管理人员考试总结
  8. 【华为Share】多屏协同和一碰传踩坑分享
  9. Golang append函数的基本原理
  10. springmvc中的视图解析器详细配置