Random 生成要附加到UID的随机字符串
我更喜欢生成唯一的随机字母数字字符串以附加到UID的末尾 到目前为止,我能在类库中找到的最接近的类是Random类,它生成的数字是次好的 到目前为止,我得到的是:Random 生成要附加到UID的随机字符串,random,uuid,smalltalk,Random,Uuid,Smalltalk,我更喜欢生成唯一的随机字母数字字符串以附加到UID的末尾 到目前为止,我能在类库中找到的最接近的类是Random类,它生成的数字是次好的 到目前为止,我得到的是: getNextRandomNumber ^(((rand nextValue) / (Time now milliSeconds asInteger / Time now minutes asInteger + (Time now hour24 asInteger)) asInteger)). rand是一个类变量,
getNextRandomNumber
^(((rand nextValue) /
(Time now milliSeconds asInteger / Time now minutes asInteger
+ (Time now hour24 asInteger)) asInteger)).
rand
是一个类变量,初始化为:
initialize
rand := Random new.
这似乎写得很糟糕。但是我不知道还能做什么。你用的是哪种方言 在Pharo中,我通常在
String类中实现一个名为#randomOfSize:
的方法。比如:
String class >> randomOfSize: anInteger
^ self streamContents: [ :s |
anInteger timesRepeat:
[ s nextPut: (Character codePoint: (97 to: 122) atRandom) ] ]
您可以调整字符代码以获得所需的字符间隔
然后,要生成8个字符长的随机字符串,您可以执行以下操作:
String randomOfSize: 8
在Pharo中,还可以使用UUID
类,如下所示:
UUID new printString
希望有帮助 尝试创建一个只包含小写字符的随机字符串,而不是字母数字字符串。ASCII 97到122是$a到$z,所以UUID类。。。它如何保持独特性?我需要担心这一点吗,还是这一切都已经自动处理了?您的个人实现处理唯一性吗?UUID类(Pharo 1.4)的类注释说:由John M McIntosh生成UUID的类johnmci@smalltalkconsulting.com如果插件不存在,我们将生成UUID版本4类型GUID;啊,谢谢!我认为这将很好地工作-由于版本4 UUID的长度,我可以只修改我的条目以使用UUID,还可以为条目的个人ID设置一个属性(使用“&&”等等)。ThanksBTW Squeak具有相同的UUID类。