2

我在 matlab 中有一个元胞数组,我需要随机抽样,但是 matlab 中的 randsample() 函数似乎不适用于元胞数组。我可以使用 randi() 生成随机数,这很好,但是我只想要唯一的数字。

是否有可用于从单元格数组中随机采样的函数,或者任何人都可以告诉我如何使用 randi() 生成唯一数字?

非常感谢。

4

1 回答 1

4

您可以使用randperm生成随机排列而不重复数字的函数。

例如P = randperm(N,K),在 1 和 N 之间给出 K 个唯一的、不重复的数字

randperm(10,5)给我:

9     2     1     6     5

randperm(10,10)给我:

7     9     4     8     2     3     6     5     1    10

假设你有一个单元格数组

C = {'only','mad','dogs','and','englishmen','go','out','in','the','midday','sun'}

然后,您可以生成一组随机短语,而无需像这样重复标记

output=[];
for i=1:5
    output = [output;sprintf('%s ',C{randperm(length(C))})];
end

这给了我如下输出

out only dogs in mad englishmen sun go and midday the 
in and the midday sun only englishmen out go dogs mad 
out midday go in dogs and only englishmen the mad sun 
the sun out mad midday englishmen go only and dogs in 
midday mad sun out dogs in and go englishmen the only 
于 2013-08-15T23:14:57.430 回答