【发布时间】:2012-02-13 15:21:08
【问题描述】:
我想创建一个随机长度和随机字符的字符串,只有 [a-z][A-Z] 和数字。有内置的吗?
提前致谢。
【问题讨论】:
我想创建一个随机长度和随机字符的字符串,只有 [a-z][A-Z] 和数字。有内置的吗?
提前致谢。
【问题讨论】:
@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);
【讨论】:
这应该可以工作
s = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; %找到可供选择的随机字符数 numRands = 长度(秒); %指定要生成的随机字符串的长度 sLength = 50; %生成随机字符串 randString = s( ceil(rand(1,sLength)*numRands) )【讨论】:
ceil而不是round,否则你可能会有索引为零,这在MATLAB中是不允许的
在我意识到你想要 [A-Z][a-z] 和 [0-9] 之前,我开始写这篇文章。为此,@Phonon 的回答很好。
作为替代方案,这将在从空格 (32) 到波浪号 (126) 的所有可读字符范围内生成随机 ASCII 字符:
length = 10;
random_string = char(floor(94*rand(1, length)) + 32);
【讨论】:
random_string = char(floor(26*rand(1, 10)) + 65);,它给了我 10 个以大写 A 开头的大写字母(这是 ASCII table 中的第 65 位),遍历所有 26 个英文字母。
你试过内置函数tempname吗?例如,这两行将在 rand_string 中为您提供随机字符串:
temp_name = tempname
[temp1, rand_string] = fileparts(temp_name)
请注意,rand_string 也将包含下划线字符“_”。
【讨论】:
tp,所有其他字母将是 a,b,c,d,e 或 f。 tempname 实际上根本不会生成随机字符串,它会生成(修改的)UUID。
tempname 给了我一个完整的临时路径作为前缀 C:\Users\JoeDoe\Temp\tp7eff7653_0873_4c68_85ba_a51d5d9fe71f。