我想在matlab.i中生成nonRepeating Random整数,我看到了
Generate random non-repeating integers from a small range当我使用提到的代码时,它会生成重复数字。我使用的代码是:nonRepeatingRand2(37,36)
。我的主要目标是从一个默认字符串生成随机字符串。例如:
我的主要字符串是'abcde',我希望从中生成'adbce'而不是'abade'
为此,我将生成nonRepeating Random整数并将它们用作字符串索引,但现在因为它给了我2或3个重复数字我有问题。
答案 0 :(得分:0)
一个简单的算法就是保留到目前为止生成的所有整数的排序列表。
生成新整数时,会从min
生成max - numberGeneratedSoFar
。
然后遍历排序列表,在您找到的每个生成的数字中添加一个,直到您在列表中找到要插入的位置为止。
生成的数字将是唯一的,并且将在该范围内完全随机分布。
答案 1 :(得分:0)
您正在寻找随机排列,因此请使用randperm
s='abcde'
s(randperm(numel(s)))