« 「神経衰弱」紹介感謝 | Main | MIザウルスでユニコード変換 »

トランプのシャッフルのアルゴリズム

トランプゲームのシャッフルのアルゴリズムを、今回の神経衰弱から改良しました。

〇カルキュレーション等で使用していた方法
CC=52
DIM VC(CC,1)
FOR I=0 TO CC-1
VC(I,1)=I+1
NEXT I
RANDOMIZE TIME
FOR I=0 TO CC-1
J=RND%CC
*LOOP1
IF VC(J,1)>0 THEN VC(I,0)=VC(J,1):VC(J,1)=0 ELSE J=(J+1)%CC:GOTO *LOOP1
NEXT I

〇神経衰弱から採用した方法
CC=52
DIM VC(CC)
FOR I=0 TO CC-1
VC(I)=I+1
NEXT I
RANDOMIZE TIME
FOR I=0 TO CC-2
J=RND%(CC-I)
W=VC(I)
VC(I)=VC(J+I)
VC(J+I)=W
NEXT I

どう違うかはリストを見てもらうとして(うまく説明出来ない(^^;)、この変更によりカード52枚のシャッフルの場合で処理速度が2倍、カード520枚のシャッフルの場合は、3から7倍向上しました。(52枚の場合、0.6秒が0.3秒になっただけなんですが、520枚では9秒から20秒かかっていたのが何と3秒に短縮しました。)

画期的なアルゴリズムを思いついたときのうれしさは、プログラミングの醍醐味だと思います。(既にポピュラーな方法かもしれませんが)

メモリを節約するためにメモリ上のプラグラムそのものを書き換えるプログラムをちまちま作っていたころの楽しさがあります。>9B

|

« 「神経衰弱」紹介感謝 | Main | MIザウルスでユニコード変換 »

Comments

Post a comment



(Not displayed with comment.)




TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/19068/1240695

Listed below are links to weblogs that reference トランプのシャッフルのアルゴリズム:

« 「神経衰弱」紹介感謝 | Main | MIザウルスでユニコード変換 »