生成随机字符串以附加到UID

MrD*_*Duk 3 random uuid smalltalk

我更喜欢生成唯一的随机字母数字字符串,以附加到我的UID的末尾.

到目前为止,我在类库中找到的最接近的是Random类,它生成的数字是下一个最好的东西.

到目前为止我所拥有的是:

getNextRandomNumber
^(((rand nextValue) / 
   (Time now milliSeconds asInteger / Time now minutes asInteger 
   + (Time now hour24 asInteger)) asInteger)).
Run Code Online (Sandbox Code Playgroud)

rand 是一个类变量,初始化为:

initialize
    rand := Random new.
Run Code Online (Sandbox Code Playgroud)

这看起来写得很糟糕.但我不确定还能做些什么.

Ber*_*osa 7

你使用哪种方言?

在Pharo中,我通常会在String class类似的东西中实现一种方法#randomOfSize:.就像是:

String class >> randomOfSize: anInteger

^ self streamContents: [ :s | 
    anInteger timesRepeat: 
      [ s nextPut: (Character codePoint: (97 to: 122) atRandom) ] ]
Run Code Online (Sandbox Code Playgroud)

您可以调整字符代码以获得所需字符的间隔.

然后,要生成8个字符长的随机字符串,您可以执行以下操作:

String randomOfSize: 8
Run Code Online (Sandbox Code Playgroud)

在Pharo中,您还可以使用UUID该类,如下所示:

UUID new printString
Run Code Online (Sandbox Code Playgroud)

希望它有所帮助!