首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Commodore 64 BASIC中选择随机字符串

在Commodore 64 BASIC中选择随机字符串
EN

Stack Overflow用户
提问于 2010-10-12 10:36:30
回答 3查看 833关注 0票数 9

我在我的程序中有这个变量声明:

代码语言:javascript
复制
X="MAGENTA"
Y="CYAN"
Z="TAN"
A="KHAKI"

现在我想要的是随机选择其中一个然后PRINT它。但如何做到这一点呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-10-12 10:49:15

我的BASIC相当生疏,但你应该可以使用下面这样的东西:

代码语言:javascript
复制
10 X$ = "MAGENTA"
20 Y$ = "CYAN"
30 Z$ = "TAN"
40 A$ = "KHAKI"
50 N = INT(RND(1) * 4)
60 IF N = 0 THEN PRINT X$
70 IF N = 1 THEN PRINT Y$
80 IF N = 2 THEN PRINT Z$
90 IF N = 3 THEN PRINT A$

或者,将其放在一个子例程中,以便代码重用:

代码语言:javascript
复制
  10 X$ = "MAGENTA"
  20 Y$ = "CYAN"
  30 Z$ = "TAN"
  40 A$ = "KHAKI"
  50 GOSUB 1000
  60 PRINT RC$
  70 END

1000 TV = INT(RND(1) * 4)
1010 IF TV = 0 THEN RC$ = X$
1020 IF TV = 1 THEN RC$ = Y$
1030 IF TV = 2 THEN RC$ = Z$
1040 IF TV = 3 THEN RC$ = A$
1050 RETURN

当然,您可能应该使用数组来处理这类事情,这样您就可以只使用:

代码语言:javascript
复制
10 DIM A$(3)
10 A$(0) = "MAGENTA"
20 A$(1) = "CYAN"
30 A$(2) = "TAN"
40 A$(3) = "KHAKI"
50 PRINT A$(INT(RND(1)*4))
票数 5
EN

Stack Overflow用户

发布于 2019-10-16 01:21:12

上面的答案是正确和全面的。

从另一方面来说,答案是否定的,但我上个月实际上做了一点Commodore BASIC,我认为字符串索引有时是有用的,所以这里有一个非答案,它会重新定义你的问题。

100 X$ = "MAGENTACYAN TAN KHAKI " 110 PRINT MID$(X$,INT(RND(1)*4)*7, 7)

这段代码获取一个从0到3的随机int,然后使用它来查找单个字符串的起始索引,该字符串包含所有四个条目,每个条目都被填充(在必要时)为7个字符。这种填充是必需的,因为MID$的最后一个参数是要提取的子字符串的长度。

为什么要麻烦呢?

何时考虑对数组进行索引:(1) when your string data is near-uniform length, and (2) when you have a LOT of little strings.

如果这两个条件为真,那么完整的代码(包括数据)会更紧凑,并且由于分配的指针更少,占用的内存也更少。

另外,如果你发现我犯了一个错误,我会给你加分!

票数 1
EN

Stack Overflow用户

发布于 2019-10-22 22:23:08

这是另一种方法,使用一个变量作为输出,并使用ON..GOSUB根据1..4范围内的随机数设置输出。

代码语言:javascript
复制
 `10 ON INT(RND(1)*4+1) GOSUB 100,110,120,130     20 PRINT A$     30 END     100 A$ = "MAGENTA":RETURN     110 A$ = "CYAN":RETURN     120 A$ = "TAN":RETURN     130 A$ = "KHAKI":RETURN`

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3911295

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档