GWBASIC中RND函数的使用与随机数生成问题解析
我在整理旧资料时发现了一个古老的BASIC程序打印稿,决定尝试运行它。经过扫描、输入电脑并修复问题后,程序终于可以运行了,但遇到了RND函数的相关问题。
程序使用了RND函数。通过在线搜索,我了解到需要在程序开头使用RANDOMIZE TIMER
命令,否则每次运行都会得到相同的随机数序列。我照做了,但代码中有一个部分仍然持续生成相同的数字。
我的代码如下:
|
|
第304行是原始代码,但我将其改为300和305行的组合,以便观察RND函数实际返回的值,而第300行总是打印出.6545178。
我必须承认,我不理解随机函数中括号内数字的作用。根据我的谷歌搜索,文档说明如下:
语法: RND[(x)]
- 如果x大于0,或者省略x,则生成序列中的下一个随机数
- 要获得0到n范围内的随机数,请使用以下公式: INT(RND*(n+1))
- 通过对x使用负值,可以为随机数生成器设置种子
此外,文档还提供了一个示例程序,每次运行都会得到不同的值,但我注意到它没有对RND使用任何参数:
|
|
在我的程序中,我尝试移除第300行中的(1),但仍然得到相同的结果。
解决方案发现:
我仍然不理解有无参数的区别,但将程序中所有的RND(-1)改为RND似乎解决了问题。现在我得到了不同的值。