Locomotive BASIC(1986)随机序列输出数量统计方法咨询
解决GEM Locomotive BASIC中统计输出随机数个数的问题
方法1:用计数变量实时跟踪(推荐)
这是最高效的方案,无需处理输出内容,直接在生成并输出每个数时累加计数器,内存占用极低,完全适配上万条数据的场景。
示例代码:
REM 初始化变量 MAX_TOTAL = 100000 ' 设定累加的最大值 COUNT = 0 ' 计数变量,初始为0 CURRENT_TOTAL = 0 ' 当前累加值 REM 循环生成随机数 DO ' 生成1-1000范围内的随机数,可自行调整范围 n = INT(RND * 1000) + 1 PRINT; n; ' 输出随机数(分号控制不换行) COUNT = COUNT + 1 ' 每输出一个数,计数器加1 CURRENT_TOTAL = CURRENT_TOTAL + n LOOP UNTIL CURRENT_TOTAL >= MAX_TOTAL REM 输出统计结果 PRINT : PRINT "输出的数值个数:"; COUNT
核心逻辑:每次输出后直接更新计数器,绕过字符串处理的开销,逻辑简单且执行速度快。最后用PRINT : PRINT换行输出结果,和之前的内容清晰分隔。
方法2:基于输出字符串统计(按需使用)
如果必须基于实际输出的字符串统计,可利用GEM Locomotive BASIC的字符串操作功能,但要注意老版本BASIC的字符串长度限制,大量数据需分段处理。
示例代码:
REM 初始化变量 MAX_TOTAL = 100000 OUTPUT_STR = "" ' 存储输出内容的字符串 CURRENT_TOTAL = 0 REM 循环生成随机数并拼接字符串 DO n = INT(RND * 1000) + 1 PRINT; n; OUTPUT_STR = OUTPUT_STR + STR$(n) + " " ' 转字符串并添加空格分隔符 CURRENT_TOTAL = CURRENT_TOTAL + n LOOP UNTIL CURRENT_TOTAL >= MAX_TOTAL REM 按空格分割统计个数 COUNT = 0 POS = 1 DO NEXT_SPACE = INSTR(POS, OUTPUT_STR, " ") IF NEXT_SPACE > 0 THEN COUNT = COUNT + 1 POS = NEXT_SPACE + 1 ELSE ' 处理末尾无空格的最后一个数字 IF POS <= LEN(OUTPUT_STR) THEN COUNT = COUNT + 1 EXIT DO END IF LOOP REM 输出结果 PRINT : PRINT "输出的数值个数:"; COUNT
说明:通过STR$()将数字转字符串并拼接,再用INSTR()循环查找空格位置计数。若输出数据量极大,需拆分字符串分段统计,避免内存溢出。
内容的提问来源于stack exchange,提问作者Liebenfiels
相关产品推荐
相关产品推荐

