Random 基本随机函数给出语法错误,不确定问题出在哪里

Random 基本随机函数给出语法错误,不确定问题出在哪里,random,basic,picaxe,Random,Basic,Picaxe,它说错误发生在11点之后,但我无法解决,请帮忙 11 * RND(1) + 1;a if a = 1 then let pinsb = 01110111 if a = 2 then let pinsb = 00010100 if a = 3 then let pinsb = 10110011 if a = 4 then let pinsb = 10110110 if a = 5 then let pinsb = 11010100 if a = 6 then let pinsb

它说错误发生在11点之后,但我无法解决,请帮忙

11 * RND(1) + 1;a

if a = 1 then let pinsb = 01110111  
if a = 2 then let pinsb = 00010100  
if a = 3 then let pinsb = 10110011  
if a = 4 then let pinsb = 10110110
if a = 5 then let pinsb = 11010100  
if a = 6 then let pinsb = 11100110
if a= 7 then let pinsb = 11100111   
if a = 8 then let pinsb = 00110100  
if a = 9 then let pinsb = 11110111  
if a = 10 then let pinsb = 11110100

根据随机值分配二进制值:

这个程序是用QB64编写的,它支持&B前缀,而QB45不支持

REM assign binary values based on a random value
a = INT(RND * 10 + 1)

IF a = 1 THEN LET pinsb = &B1110111
IF a = 2 THEN LET pinsb = &B10100
IF a = 3 THEN LET pinsb = &B10110011
IF a = 4 THEN LET pinsb = &B10110110
IF a = 5 THEN LET pinsb = &B11010100
IF a = 6 THEN LET pinsb = &B11100110
IF a = 7 THEN LET pinsb = &B11100111
IF a = 8 THEN LET pinsb = &B110100
IF a = 9 THEN LET pinsb = &B11110111
IF a = 10 THEN LET pinsb = &B11110100

使用二进制转换函数基于随机值分配二进制值:

REM assign binary values based on a random value using a binary convert function
A = INT(RND * 10 + 1)
IF A = 1 THEN pinsb = GetBinary("1110111")
IF A = 2 THEN pinsb = GetBinary("10100")
IF A = 3 THEN pinsb = GetBinary("10110011")
IF A = 4 THEN pinsb = GetBinary("10110110")
IF A = 5 THEN pinsb = GetBinary("11010100")
IF A = 6 THEN pinsb = GetBinary("11100110")
IF A = 7 THEN pinsb = GetBinary("11100111")
IF A = 8 THEN pinsb = GetBinary("110100")
IF A = 9 THEN pinsb = GetBinary("11110111")
IF A = 10 THEN pinsb = GetBinary("11110100")
END
FUNCTION GetBinary (B$)
    FOR V = LEN(B$) TO 1 STEP -1
        IF MID$(B$, V, 1) = "1" THEN
            X# = X# + 2 ^ (V - 1)
        END IF
    NEXT
    GetBinary = X#
END FUNCTION

使用二进制文件根据随机值分配二进制值 转换从数据读取值的函数

REM assign binary values based on a random value using a binary
REM convert function reading values from data.
RANDOMIZE TIMER ' reseed rnd
A = INT(RND * 10 + 1)
RESTORE
FOR X = 1 TO A
    READ X$
NEXT
pinsb = GetBinary(X$)
PRINT "pinsb="; pinsb
END
DATA "1110111","10100","10110011","10110110","11010100"
DATA "11100110","11100111","110100","11110111","11110100"
FUNCTION GetBinary (B$)
    FOR V = LEN(B$) TO 1 STEP -1
        IF MID$(B$, V, 1) = "1" THEN
            X# = X# + 2 ^ (V - 1)
        END IF
    NEXT
    GetBinary = X#
END FUNCTION

我假设这个问题是关于及其基本语言的,因为
[picaxe]
标记。发布的代码中有一些东西在PICAXE BASIC中不起作用,因此我猜您熟悉不同的方言,或者正在尝试使用为不同方言编写的代码在PICAXE上使用。如果不是这样,请告诉我们

要使此代码在PICAXE上运行,您需要修复以下几项:

  • 你不能只分配给一个新的变量名;您需要使用内置名称
    b0
    b1
    b2
    等(字节变量)或
    w0
    w1
    w2
    等(单词变量),除非您使用
    符号
    关键字为其定义了另一个名称
  • 要生成随机数,请使用
    random
    关键字,该关键字将随机值指定给指定的单词变量
  • 您只能将一行
    if…then
    命令与
    goto
    gosub
    退出一起使用。否则,您需要使用
    if…then…endif
    结构,但您可以使用
    将其写在一行上以分隔命令
  • 最后,要指定二进制值,请在其前面加一个
    %
    字符
所以我想你要做的是:

symbol a = w0             ; use the name 'a' for word variable w0
random a                  ; assign a random value of 0...65535 to a
a = a // 10 + 1           ; // is modulo i.e. remainder of a / 10, so result is in range 1 - 10

if a = 1 then : pinsB = %01110111 : endif 
if a = 2 then : pinsB = %00010100 : endif
if a = 3 then : pinsB = %10110011 : endif
if a = 4 then : pinsB = %10110110 : endif
if a = 5 then : pinsB = %11010100 : endif 
if a = 6 then : pinsB = %11100110 : endif
if a = 7 then : pinsB = %11100111 : endif
if a = 8 then : pinsB = %00110100 : endif
if a = 9 then : pinsB = %11110111 : endif
if a = 10 then : pinsB = %11110100 : endif

请始终记住,每个单词变量都由两个字节的变量组成,因此如果使用了
w0
,则不能同时使用
b0
b1
,以此类推。

在第一行中尝试a=11*rnd(1)+1,而不是为二进制值声明&B,例如,为清楚起见,pinsb=&b0110111,这是PICAXE BASIC吗?尽管LET关键字不再使用或不再需要。我很困惑。问题被标记为[picaxe],而不是[quickbasic]或[qb64]。你的答案在PICAXE BASIC中都不起作用。我遗漏了什么吗?抱歉,我没有看到PICAXE标记,并且假设您正在使用QB。如果您没有运行QB64,请使用此选项。