Random shuffle of vector elements without repeating
5 次查看(过去 30 天)
显示 更早的评论
For my class, I have to create an anagram-type function that receives an input string, shuffles all the elements, and returns a new string of the shuffled letters. We are to use for loops and if statements; we can't use perms, randperm, or randsample. I have a good start on this:
outstr=zeros(size(instr));
for i=1:numel(instr)
outstr(randi([1,numel(instr)]))=instr(randi([1,numel(instr)]));
end
char(outstr)
My question is how to avoid repetition. Right now my function works, but it will repeat elements and thus leave some out. I'm thinking an if statement, to compare the randomly selected index to what has already been selected, but I can't pound it out yet. Any help is appreciated.
0 个评论
回答(1 个)
Jan
2016-3-12
You can sort a vector of random values. The sorting index does not contain repetitions.
Did you search for a shuffle algorithm in the internet already? Look for "Knuth" and "Yates".
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Loops and Conditional Statements 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!