How to do Randi with letters
    10 ビュー (過去 30 日間)
  
       古いコメントを表示
    
Is it possible to do the RANDI function with letters?
And you will see an example like this:
X7S7-6S6A-Y555-U75T
for i=1:4
     r(i)= randi([1000,9999],1,1);
end
r= num2str(r);
fprintf('Your code is -"%s"',r)
the print look like : Your code is -"4818  3432  2773  8395"
tnx :)
0 件のコメント
採用された回答
  Jan
      
      
 2021 年 4 月 27 日
        
      編集済み: Jan
      
      
 2021 年 4 月 27 日
  
      Provide a pool with valid characters and use randi() to determine the random indices:
Pool = ['A':'Z', '0':'9'];
Key  = Pool(randi(numel(Pool), 1, 16));
KeyC = cellstr(reshape(Key, 4, []).');
KeyS = strjoin(KeyC, '-');
fprintf('Your code is: %s', KeyS)
% Or after creation of [Key]:
KeyS = sprintf('%c%c%c%c-%c%c%c%c-%c%c%c%c-%c%c%c%c', Key);  % ugly
その他の回答 (1 件)
  Steven Lord
    
      
 2021 年 4 月 27 日
        There's no need for the first loop since randi can create a vector of values.
r = randi([1000,9999],1,4)
Since you're using a release that includes string I'd use that.
S = string(r)
Now you can join the strings in S together.
code = "Your code is - " + join(S, " ")
There are other ways you can "do randi with letters" particularly for your first example where you wanted something like "X7S7-6S6A-Y555-U75T"
allowedChars = ['A':'Z' '0':'9'];
whichChars = randi(numel(allowedChars), [4 4]);
selectedChars = allowedChars(whichChars)
Now turn each of those vectors into strings and join them as before.
code = "Your code is - " + join(string(selectedChars), " : ")
参考
カテゴリ
				Help Center および File Exchange で Characters and Strings についてさらに検索
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


