在matlab中生成非重复随机整数时出错

时间:2013-12-14 21:22:41

标签: matlab random

我想在matlab.i中生成nonRepeating Random整数,我看到了 Generate random non-repeating integers from a small range当我使用提到的代码时,它会生成重复数字。我使用的代码是:nonRepeatingRand2(37,36)。我的主要目标是从一个默认字符串生成随机字符串。例如:
我的主要字符串是'abcde',我希望从中生成'adbce'而不是'abade' 为此,我将生成nonRepeating Random整数并将它们用作字符串索引,但现在因为它给了我2或3个重复数字我有问题。

2 个答案:

答案 0 :(得分:0)

一个简单的算法就是保留到目前为止生成的所有整数的排序列表。

生成新整数时,会从min生成max - numberGeneratedSoFar

然后遍历排序列表,在您找到的每个生成的数字中添加一个,直到您在列表中找到要插入的位置为止。

生成的数字将是唯一的,并且将在该范围内完全随机分布。

答案 1 :(得分:0)

您正在寻找随机排列,因此请使用randperm

s='abcde'
s(randperm(numel(s)))