私が達成しようとしていることは次のとおりです。
比較的狭い範囲から整数のベクトルを作成し、どの整数の後にも同じ整数が続かないようにしたいと考えています。
つまり、これは「正当な」ベクトルです: [ 1 3 4 2 5 3 2 3 5 4 ]
これは「不正な」ベクトルです (5 は 5 に続くため): [ 1 3 4 2 5 5 2 3 5 4 ]
randi
、および のあらゆる種類のバリエーションを試しrandperm
ましたが、狭い範囲 (つまり、1 ~ 5 の整数) から約 100 要素のベクトルを生成しようとすると、常に行き詰まります。
関数の実行時間が長すぎます。
これが私が行った試みの1つです:
function result = nonRepeatingRand(top, count)
result = randi(top, 1, count);
while any(diff(result) == 0)
result = randi(top, 1, count);
end
end
どんな助けでも大歓迎です。ありがとう !