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