matlab - randperm() 可以生成多个随机排列吗?

标签 matlab

在 Matlab 中

p = randperm(n,k) returns a row vector containing k unique integers selected randomly from 1 to n inclusive.

一次调用 randperm() 是否可以返回多行向量,每一行都如上所示? 如果不是,是否有其他方法可以生成多个随机排列?

在这种情况下避免循环一定会更快吗?

谢谢!

最佳答案

RANDPERM本身只返回一个排列。如果你想避免循环,你可以用 ARRAYFUN 调用它:

Nperm = 5; 
N = 6;
result = arrayfun(@(x)randperm(N),(1:Nperm)','UniformOutput',0);

这将返回 Nperm x 1 元胞数组。要将其转换为矩阵,您可以使用 CELL2MAT:

result = cell2mat(result);

还有PERMS返回所有排列的函数,但它只适用于小数字。

同时检查 FileExchange 提交 ALLCOMB , PERMSothers .

关于matlab - randperm() 可以生成多个随机排列吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15684928/

相关文章:

matlab - MATLAB矩阵的互信息

MATLAB:图形字体

Matlab 编译器运行时库

performance - 是否有内置的 matlab 可以计算二次形式 (x'*A*x)?

java - 使用Matlab创建MySql数据库

MATLAB:读取无符号 16 位二进制文​​件的两个字节

image - 在不引入插值的情况下在matlab中调整图像大小

performance - Matlab 重复矩阵乘法 - 循环与内置性能

matlab - 提取分布值 Matlab

optimization - 相同代码的 MATLAB 速度差异