投稿
うくじー 1221.PPTOT
一回ランダムで出た数字を再度、ランダムをするときにその数字を除かせることはどうすれば出来るんでしょうか? 要は一度出した数字を重複させない方法が知りたいのです。 この仕組みがわかったら、ビンゴマシンのようなものが作れると思います。 質問がわかりにくくてすいません…
3そうだね
プレイ済み
返信[1]
親投稿
ようすけ youslzh
その場その場でランダム抽選をする方法もありますが、最初に全部決めておくという方法もあります。 後者をざっくり説明すると、 10個の配列があったとして予め1から10までの数字が入ってます。配列2番と配列6番を入れ替えみたいな事を複数回やれば実質トランプをシャッフルしたのと同じになり重複も無いですよ。
2そうだね
プレイ済み
返信[2]
親投稿
あきと SideBurnsM
NUM_MAX=100 '配列の大きさ SHUFFLE_NUM=20 '配列1箇所ごとのシャッフルの回数 DIM NUMBERS[NUM_MAX] '数字が格納される配列 FOR I=0 TO NUM_MAX-1 '1からNUM_MAXまで数値を格納  NUMBERS[I]=I+1 NEXT FOR I=0 TO NUM_MAX-1 '配列の中身をランダムで入れ替える FOR N=0 TO SHUFFLE_NUM  SWAP NUMBERS[N],NUMBERS[RND(NUM_MAX)] NEXT NEXT FOR I=0 TO NUM_MAX-1 '試しにプリント  ? NUMBERS[I];","; NEXT
1そうだね
プレイ済み
返信[3]
親投稿
あきと SideBurnsM
サンプル書いてみました。 実行するとNUMBERSという配列に1から100までの数字がばらばらの順番に重複なく入っていることになります。 順番に取り出していけばうくじーさんが書いていた「一度出した数字を重複させない方法」になるはずです。 NUM_MAXを変えれば配列の幅も変えられますし、6行目の「+1」を外せばこのサンプルでは1-100でなく0-99にすることもできます。
1そうだね
プレイ済み
返信[4]
親投稿
うくじー 1221.PPTOT
>ようすけさん あきとさん 教えていただきありがとうございます。 自分が現在作っているプログラムにあきとさんのサンプルを丸々使わさせていただきます。
0そうだね
プレイ済み
返信[5]
親投稿
あきと SideBurnsM
ちょっと間違ってる場所がありました。 10行目の SWAP NUMBERS[N], NUMBERS[RND(NUM_MAX)] なんですが、一つ目の引数は「NUMBERS[I]」が正しいです。 NではなくてIですね。 完全に間違いではないのですが、より混ぜるためにはIの方が良いので訂正します。ごめんなさい
0そうだね
プレイ済み
返信[6]
親投稿
うくじー 1221.PPTOT
そうなんですか。 教えていただきありがとうございます。
0そうだね
プレイ済み