GAIさんへのお返事です。
!クルスカル・カウント(Kruskal count)
LET N=52 !カードの枚数
LET mk$="SCHD" !カードのマーク
LET nm$="A234567890JQK" !カードの番号
DEF s2n(s)=MOD(s-1,13)+1 !連番をカードの番号へ
DEF s2m(s)=INT((s-1)/13)+1 !連番をカードのマークへ
DIM c(N) !カードの並び
SUB card_initialize(c(),N) !カードを整列する
FOR i=1 TO N
LET c(i)=i
!!!PRINT i;s2m(i);s2n(i)
NEXT i
END SUB
RANDOMIZE
SUB shuffle_randomize(c(),N) !ランダムにシャッフルする
FOR i=N TO 2 STEP -1
LET j=INT(RND*(i-1))+1 !1~i-1
swap c(i),c(j)
NEXT i
END SUB
!------------------------------ ここまでがサブルーチン
CALL card_initialize(c,N)
CALL shuffle_randomize(c,N)
MAT PRINT c;
FOR r=1 TO 10 !好きな数字
LET p=r !その数字の枚数分、トランプを上から順に表向きにして机の上に重ねて配る(順番を崩さないため)
DO WHILE p<=N !手持ちのトランプの残りがなければ、終了。
PRINT c(p); !表向きの一番上のトランプの数字
LET t=s2n(c(p)) !1~13
IF t>10 THEN LET t=5 !絵札はすべて5とする
LET p=p+t !次へ
LOOP
PRINT
NEXT r !机の上の表向きのトランプを全て取り上げて裏向きにし、手持ちのトランプの上に戻す
END