RANDOMIZE DIM s(50) FOR i=1 TO 50 LET s(i)=RND100(i) NEXT i CALL sort(s,50) PRINT PRINT " 0 〜 99 の整数から50個を任意に選びます。( 重複あり )" PRINT " そして、小さい順に並べます。" PRINT FOR i=1 TO 10 PRINT USING " ## ## ## ## ## ## ## ## ## ##":s(i); NEXT i PRINT FOR i=11 TO 20 PRINT USING " ## ## ## ## ## ## ## ## ## ##":s(i); NEXT i PRINT FOR i=21 TO 30 PRINT USING " ## ## ## ## ## ## ## ## ## ##":s(i); NEXT i PRINT FOR i=31 TO 40 PRINT USING " ## ## ## ## ## ## ## ## ## ##":s(i); NEXT i PRINT FOR i=41 TO 50 PRINT USING " ## ## ## ## ## ## ## ## ## ##":s(i); NEXT i PRINT END EXTERNAL FUNCTION RND100(q) ! 0〜99を乱数で出す。 OPTION BASE 0 DIM FL(100) DO LET X=INT(RND*100) LOOP UNTIL FL(X)=0 LET FL(X)=1 LET RND100=X END FUNCTION EXTERNAL SUB sort(a(),m) FOR i=1 TO m-1 FOR j=i+1 TO m IF a(i)>a(j) THEN LET t=a(j) LET a(j)=a(i) LET a(i)=t END IF NEXT j NEXT i END SUB ###################################################################### RANDOMIZE OPTION BASE 0 DIM s(50),FL(100) FUNCTION RND100(q) ! 0〜99を乱数で出す。ただし1度出た数はださない。 DO LET X=INT(RND*100) LOOP UNTIL FL(X)=0 LET FL(X)=1 LET RND100=X END FUNCTION FOR i=1 TO 50 LET s(i)=RND100(i) NEXT i CALL sort(s,50) PRINT PRINT " 0 〜 99 の整数から50個を任意に選びます。( 重複なし )" PRINT " そして、小さい順に並べます。" PRINT FOR i=1 TO 10 PRINT USING " ## ## ## ## ## ## ## ## ## ##":s(i); NEXT i PRINT FOR i=11 TO 20 PRINT USING " ## ## ## ## ## ## ## ## ## ##":s(i); NEXT i PRINT FOR i=21 TO 30 PRINT USING " ## ## ## ## ## ## ## ## ## ##":s(i); NEXT i PRINT FOR i=31 TO 40 PRINT USING " ## ## ## ## ## ## ## ## ## ##":s(i); NEXT i PRINT FOR i=41 TO 50 PRINT USING " ## ## ## ## ## ## ## ## ## ##":s(i); NEXT i PRINT END EXTERNAL SUB sort(a(),m) FOR i=1 TO m-1 FOR j=i+1 TO m IF a(i)>a(j) THEN LET t=a(j) LET a(j)=a(i) LET a(i)=t END IF NEXT j NEXT i END SUB ###################################################################### RANDOMIZE OPTION BASE 0 DIM s(50),F(100) FOR i=1 TO 100 LET F(i)=i NEXT i CALL syafl(F,100) FOR i=1 TO 50 LET s(i)=F(i)-1 NEXT i CALL sort(s,50) PRINT PRINT " 0 〜 99 の整数から50個を任意に選びます。( 重複なし )" PRINT " そして、小さい順に並べます。" PRINT FOR i=1 TO 10 PRINT USING " ## ## ## ## ## ## ## ## ## ##":s(i); NEXT i PRINT FOR i=11 TO 20 PRINT USING " ## ## ## ## ## ## ## ## ## ##":s(i); NEXT i PRINT FOR i=21 TO 30 PRINT USING " ## ## ## ## ## ## ## ## ## ##":s(i); NEXT i PRINT FOR i=31 TO 40 PRINT USING " ## ## ## ## ## ## ## ## ## ##":s(i); NEXT i PRINT FOR i=41 TO 50 PRINT USING " ## ## ## ## ## ## ## ## ## ##":s(i); NEXT i PRINT END EXTERNAL SUB syafl(Z(),M) ! シャッフルする DIM G(M,M) FOR i=1 TO M LET G(1,i)=i NEXT i FOR i=1 TO M-1 LET H=INT(RND*(M-i+1)) LET Z(i)=G(i,H+1) FOR j=1 TO M IF j>=M-i+1 THEN LET G(i+1,j)=-1 GOTO 10 END IF IF G(i,j)a(j) THEN LET t=a(j) LET a(j)=a(i) LET a(i)=t END IF NEXT j NEXT i END SUB