3

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

到目前为止,我在类库中找到的最接近的是 Random 类,它生成的数字是次优的。

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

getNextRandomNumber
^(((rand nextValue) / 
   (Time now milliSeconds asInteger / Time now minutes asInteger 
   + (Time now hour24 asInteger)) asInteger)).

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

initialize
    rand := Random new.

这似乎写得很糟糕。但我不确定还能做什么。

4

1 回答 1

7

你用的是哪种方言?

在 Pharo 中,我通常实现一个String class名为#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

希望它有所帮助!

于 2013-07-02T08:44:24.893 回答