トピック
プレ pure003

乱数

1~40の数をランダムに並べかえる方法はありますか? RNDをFOR~NEXTで40回ループさせても一部が同じ数が出るので困っています
0そうだね
プレイ済み
返信[1]
親投稿
数字を配列に入れてランダムに入れ換えるのが割りとよくあるパターンな気がします。
1そうだね
プレイ済み
返信[2]
親投稿
Hanzo rzsense
クッキーさんの手法がスマートと思いますが、一応「別解」を提示致します。40個の数列の中からランダムに1つを選んだら、次は先程選んだ以外の39個から1つを選んで・・・と言う手順を40回繰り返します。
0そうだね
プレイ済み
返信[3]
親投稿
れい rei-nntnd
んっと、前も同じ話題出てたと思うけど… クッキー氏のそのままだとちゃんとしたランダムにならない。 並べ替えるのはFisher–Yatesという方法を使うのが普通で最速で最小コスト。 クッキー氏の9~11行を以下に換える。 for i = len(a)-1 to 0 step -1 swap a[i],a[rnd(i+1)] next
0そうだね
プレイ済み
返信[4]
親投稿
れい rei-nntnd
あ、訂正。 最後0は要らないんだ。 for i=len(a)-1 to 1 step -1 でいい
1そうだね
プレイ済み
返信[5]
親投稿
プレ pure003
みなさんありがとうごさいます ちゃんと動きました  うーん...難しいな
0そうだね
プレイ済み