BASIC 编程/随机数生成
外观
< BASIC 编程
游戏的一个有用功能是随机数。这是一个看起来随机分布的数字序列,因此可用于模拟诸如洗牌或在程序每次运行时产生不同行为之类的事件。
不同的方言可能需要函数参数,因此RND(), RND(0)和RND(1)很常见。参数通常会被忽略。 |
BASIC 中的随机数由RND函数生成。它返回一个介于 0 和 1 之间的数字。例如
PRINT "Wikibooks' coolness quotient: ", RND, "%"
你将获得“维基教科书的酷炫指数:.7055475%”。
该序列通常以两种方式之一产生,具体取决于 BASIC 的方言。对于早期的大型机和小型机 BASIC,以及大多数现代版本,这些数字是使用应用于最后一个生成的数字的数学公式生成的。每次都会返回相同的序列,因此要产生不同的数字,必须更改起始值。这被称为“对随机数生成器进行播种”,或者简称为“播种”。来自家用电脑时代的 BASIC 使用了基于内部时钟的不同方法,该方法产生了永远不同的序列,并且不需要播种。 |
该结果看起来很随机。再次运行它,你得到了相同的值!这会让游戏很无聊。这就是播种的目的,通常用RANDOMIZE语句完成。在现代方言中,这可以使用TIMER关键字与时钟绑定
RANDOMIZE TIMER
PRINT "Wikibooks' coolness quotient: ", RND, "%"
这将打印“维基教科书的酷炫指数:.8532526%”,而另一次则会打印“维基教科书的酷炫指数:.3582422%”。更好,对吧?
但是小数并不总是很有用。如果你想要一个整数,你必须获得一个随机数,然后将其转换为整数。通常你希望该数字在两个限制之间,比如 0 和 100。一个解决方案是取该数字,乘以最大期望值,加上一半将其四舍五入,然后取整数部分。以下代码的某些细微变化非常常见
PER = INT(RND() * 99 + 0.5)
像 QBASIC 这样的现代方言提供了更多控制。我们可以声明该变量是一个整数,BASIC 将强制它使用该格式并稍微简化代码
RANDOMIZE TIMER
DIM PER AS INTEGER
PER = RND * 100 + 0.5
PRINT "Wikibooks' coolness quotient: ", PER, "%"
这将打印“维基教科书的酷炫指数:85%”。