如何在Matlab中生成随机字符串?

如何在Matlab中生成随机字符串?,matlab,random,Matlab,Random,我想创建一个具有随机长度和随机字符的字符串,只有[a-z][a-z]和数字。里面有什么东西吗 提前谢谢。这应该行得通 s = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; %find number of random characters to choose from numRands = length(s); %specify length of random string to generate sL

我想创建一个具有随机长度和随机字符的字符串,只有[a-z][a-z]和数字。里面有什么东西吗

提前谢谢。

这应该行得通

s = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; %find number of random characters to choose from numRands = length(s); %specify length of random string to generate sLength = 50; %generate random string randString = s( ceil(rand(1,sLength)*numRands) ) s='ABCDEFGHIJKLMNOPQRSTUVXYZABDEFGHIJKLMNOPQRSTUVXYZ0123456789'; %查找要从中选择的随机字符数 numRands=长度(s); %指定要生成的随机字符串的长度 长度=50; %生成随机字符串 randString=s(ceil(rand(1,长度)*numRands))
在我意识到你想要[A-Z][A-Z]和[0-9]之前,我开始写这篇文章。对于这一点,@Phonon的答案是好的

作为替代方案,这将在从空格(32)到波浪号(126)的整个可读字符范围内生成随机ASCII字符:


对于@Phonon和@dantswain的答案,除了
[a-Z]
[a-Z]
的范围可以以不那么痛苦的方式生成,并且
randi
可以用来创建整数随机值之外,没有什么可以补充的

 symbols = ['a':'z' 'A':'Z' '0':'9'];
 MAX_ST_LENGTH = 50;
 stLength = randi(MAX_ST_LENGTH);
 nums = randi(numel(symbols),[1 stLength]);
 st = symbols (nums);

您是否尝试过内置函数tempname?例如,这两行将为您提供rand_字符串中的randon字符串:

temp_name = tempname
[temp1, rand_string] = fileparts(temp_name)

请注意,rand_字符串还将包含下划线字符“u”。

谢谢!有没有更好的方法在不使用长字符串的情况下实现这一点?小错误:您应该使用
ceil
而不是
round
,否则您可能会有索引零,这在Matlab中是不允许的。请注意,生成名称的前两个字母将是
tp
,所有其他字母将是
a,b,c,d,e
f
tempname
实际上根本不生成随机字符串,它生成(修改)UUID。
tempname
给了我一个完整的临时路径作为前缀
C:\Users\JoeDoe\temp\tp7eff7653\u 0873\u 4c68\u 85ba\u a51d5d9fe71f
。[OP没有明确要求,但对任何关心的人来说:结果分布将不均匀,因为存在对较短字符串的偏见。]经过一些调整,我仍然发现这是一个很好的简单单行解决方案,可以满足简单的需要。我使用的是
random_string=char(floor(26*rand(1,10))+65)
这给了我10个大写字母,以大写字母A开头(在第65位),贯穿了英语字母表的所有26个字母。
temp_name = tempname
[temp1, rand_string] = fileparts(temp_name)