RANDOMIZE PRINT PRINT "1〜nの自然数をランダムに並べます。" PRINT INPUT PROMPT "n=? ":n PRINT DIM a(n),b(n) PRINT FOR i=1 TO n LET a(i)=i LET b(i)=i PRINT a(i); NEXT i PRINT PRINT CALL shuffle(a,n) PRINT FOR j=1 TO n PRINT b(j); NEXT j PRINT PRINT " ↓↓" FOR j=1 TO n PRINT a(j); NEXT j PRINT PRINT END EXTERNAL SUB shuffle(a(),n) !シャッフルする FOR i=n TO 2 STEP -1 LET p=INT(RND*(i-1))+1 !左側 1〜i-1 PRINT "ランダム";i-1;"以下の数字 p =";p PRINT "a(";i;") =";a(i);" a(";p;") =";a(p) PRINT IF i>2 THEN LET t=a(i) !右端iと交換する LET a(i)=a(p) LET a(p)=t FOR j=1 TO n PRINT a(j); NEXT j PRINT PRINT ELSE IF RND<0.5 THEN LET t=a(i) !右端iと交換する LET a(i)=a(1) LET a(1)=t PRINT "RND < 0.5 なので" FOR j=1 TO n PRINT a(j); NEXT j PRINT PRINT ELSE PRINT "RND >= 0.5 なので" FOR j=1 TO n PRINT a(j); NEXT j PRINT PRINT END IF END IF NEXT i END SUB