random - 如何在 Smalltalk 的范围内生成随机整数?

标签 random smalltalk logical-operators

我目前正在上的一门课要求我们在 smalltalk 中完成所有编码(这是一个设计课)。在我们的一个项目中,我想做一些事情,但很难找到如何去做。似乎大多数人所做的就是修改他们自己的 smalltalk 版本来做他们需要做的事情。我不能随意这样做,因为当他没有与我相同的内置方法时,这会导致我教授的计算机出现错误。

这是我想要做的:

随机数。我需要在 1 到 1000 之间创建一个随机数。现在我正在通过这样做来伪造它

rand := Random new.
rand := (rand nextValue) * 1000.
rand := rand asInteger.

这给了我一个 0 到 1000 之间的数字。有没有办法在一个命令中做到这一点?相似
Random between: 0 and: 1000

和/或语句。这个让我感到厌烦。我尝试了几种不同的配置
(statement) and: (statement) ifTrue...
(statement) and (statement) ifTrue...

所以我用嵌套的 ifTrue 语句来伪造它:
(statement) ifTrue:[
    (statement) ifTrue:[...

在smalltalk中做和/或随机的正确方法是什么?

最佳答案

问题是

 (expr) and: (expr) ifTrue: aBlock

被解析为方法 and:ifTrue:如果您查看 Boolean 类(特别是 True 或 False),您会注意到 ifTrue: 只是一个常规方法,并且没有方法 and:ifTrue: 存在 - 然而,简单的 and: 确实存在。所以为了明确这是两条消息,写
((expr) and: (expr)) ifTrue: aBlock

对于更长的 bool 组合,请注意还有方法 and:and: 和 and:and:and: 已实现。

关于random - 如何在 Smalltalk 的范围内生成随机整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/271394/

相关文章:

random - 寻找随机斜率上一点的切线

javascript - 如何在海边应用程序中嵌入谷歌分析脚本(新版本)

closures - Smalltalk 支持 block 中的局部变量吗?如果没有,为什么?

version-control - Monticello:同步协作开发的工作流程/在复制到远程存储库时正确编号版本

powershell - PowerShell:一长串条件,优雅地使用逻辑运算符

javascript - 在 Typescript 中处理 null >= 0

sql - SQL Server 中的不等于逻辑问题

java - 在java中随机选择的对象上调用通用方法的更好方法

algorithm - 确定两个随机数生成器之间的相似性

matlab - 在 Parfor 循环中生成扰乱的准蒙特卡罗数的问题