我在 Smalltalk 中有一个半年的项目要做,但我一直在从数组中选择一个随机元素。
array = #('Alex' 'Bob' 'Frank' 'Samantha').
^"RandomChoice"
现在我需要从数组中选择一个随机名称。我找到了 Random 函数,但不知道它是如何工作的。有人帮忙吗?谢谢!
我在 Smalltalk 中有一个半年的项目要做,但我一直在从数组中选择一个随机元素。
array = #('Alex' 'Bob' 'Frank' 'Samantha').
^"RandomChoice"
现在我需要从数组中选择一个随机名称。我找到了 Random 函数,但不知道它是如何工作的。有人帮忙吗?谢谢!
首先它是写成 Smalltalk 而不是 SmallTalk。
您需要考虑您要达到的目标。由于您没有指定您的 Smalltalk,我将使用我最了解的 Smalltalk/X-jv 分支。
您的评论表明您已经找到了atRandom应该按照您在问题中指定的方法:
atRandom
"Return any random element from the receiver"
^ self atRandom:Random
"
#(1 2 3) atRandom
我已经在 Smalltalk/X 上尝试过,它按预期工作。
即使您在 Workspace 执行时,它也可以正常工作:
#('Alex' 'Bob' 'Frank' 'Samantha') atRandom.'Frank' ('Frank'是的结果print it)
你可以用不同的方式来做,比如(这是次优的,因为它atRandom可以正常工作):
(#('Alex' 'Bob' 'Frank' 'Samantha') asOrderedColletion randomShuffle) at: 1.
这使得 OrderedCollection 来自 Array 并随机洗牌并选择第一个位置。
您的方法可能如下所示:
randomName: nameArray
^ nameArray atRandom