コミュニティアイコン プチコン 非公式コミュニティ トピック

アバター
けんしろウッ ◆TWF1MT.h/yWA
2017/11/17 14:09
情報交換
数をランダムに並べる方法
0からn-1の数をランダムに並べるときどんなコードを書きますか?
例えば0から9までなら
4,2,5,8,1,3,9,7,6,0
(↑ランダムのつもり)
みたいな感じです。
自分が使ってるやつはコメントに置いておきます。

コメント

アバター
なぎ 2017/11/17 14:38 ◆2vQDAT5B8579
フィッシャーとイェーツによるアルゴリズムはつかったことあります(*´ー`*)
カードゲームなどでカードをシャッフルします(*´∇`*)
DEF SHUFFLE ARY,SIZE 'Fisher-Yatesシャッフルアルゴルズム
VAR J,T
FOR I=0 TO SIZE-1
J= RND(SIZE)
T= ARY[I]
ARY[I]=ARY[J]
ARY[J]=T
NEXT
END
アバター
けんしろウッ 2017/11/17 14:46 ◆TWF1MT.h/yWA
そんな名前が付けられたアルゴリズムがあるんですね!('Д')
勉強になります。
面白いなあ
アバター
なぎ 2017/11/17 15:11 ◆2vQDAT5B8579
SWAP命令使えばよかった( ̄▽ ̄;)
DEF SHUFFLE ARY,SIZE
VAR J
FOR I=0 TO SIZE-1
J= RND(SIZE)
SWAP ARY[I],ARY[J]
NEXT
END
アバター
なぎ 2017/11/17 15:30 ◆2vQDAT5B8579
あー、これシャッフルするだけだから最初配列にセットしないといけないのか( ̄▽ ̄;)
FOR I=0 TO SIZE-1
 ARY[I]=I
NEXT
アバター
けんしろウッ 2017/11/17 15:42 ◆TWF1MT.h/yWA
なんか他にも方法ありそうなもんだけどなかなか思いつかないなぁ
僕はいつもは上のコメントのsortを使ってます
swapのより先にこっちを思いついて、一気に混ぜる感じが気に入ってます。

swapが丁寧にカードを手でシャッフルする感じだとしたらsortはカードをぶちまけてかき混ぜてから束ねるイメージ。
アバター
あまさとしおん 2017/11/17 16:20 ◆mzDKTVUAtwqE
SORTが好き
アバター
otta 2017/11/17 20:38 ◆ZQuDlgZE6PVg
MX=10
DIM N[MX]
FOR I=O TO MX-1
N[I]=I+1
NEXT
P=MX-1
WHILE P>0
SWAP N[P],N[RND(P)]
P=P-1
WEND

前にミバで見た方法ですがSWAP命令の配列の要素番号が重複しないので
数値が入れ替えされない組み合わせが無くなります。
配列の後ろから数字を固定していくのがミソだそうです。
アバター
しんいち 2017/11/18 0:07 ◆lHy.hAWXbthn
ミバで色々教えてもらったことがありました。
私が使ってるのはこんな感じです。
N$="":N=9
FOR I=0TO N N$=N$+CHR$(I) NEXT
FOR I=0TO N
P=RND(LEN(N$))
?ASC(N$[P])
N$[P]=""
NEXT
アバター
みなつ 2017/11/18 16:23 ◆hJTkStjweib1
なぎさんがご紹介されてるものが、けんしろウッさんのSWAPを使ったものと同じですにゃ!
プチコンに限定しなければ、私もこれが好きです(*´▽`*)

プチコンみたいに、インタープリタ型の処理系で内蔵SORTが用意されている場合は、SORTを使う方法も使っちゃいます(≧∇≦)b

コメントを書く

  • こちらは「プチコン3号」「プチコンBIG」など、プチコンシリーズに関する話題を扱ったコミュニティです
  • プチコンシリーズにまったく関係ない書き込みはご遠慮下さい。削除の対象となります
  • こちらにはその他のゲームや雑談のコミュニティはなく、作る予定もありません (ひとりで管理できないため)。ごめんなさい
  • ユーザー登録なしで書き込みができます
  • 秘密の合い言葉は成りすましの防止 (トリップ機能)、書き込みの編集時の本人認証に使用します
  • 秘密の合い言葉に他人に推測されやすい言葉、他サービスと同じパスワードは入力しないでください。
  • 書き込むと、投稿時に入力したお名前と秘密の暗号が記憶され、ログイン状態になります

- WEB PATIO -