SRC質問掲示板Mk2
(現在 過去ログ100 を表示中)

HOME HELP 新規作成 新着記事 トピック表示 検索 掲示板新着情報RSS配信新着情報 過去ログ

[ 最新記事及び返信フォームをトピックトップへ ]

■18145 / inTopicNo.1)  ランダム順列
  
□投稿者/ 沙羅双樹 -(2006/03/09(Thu) 14:25:00) [ID:oMbuos4f]
    自称SRC中級者の沙羅双樹です。まだ中級者の域で踏みとどまっているつもりです。

    早速質問。
    ランダム順列を作るにはどうすればよろしいでしょうか?

    例:0〜9のランダム順列→8307469251、等

    私は40個の要素のランダム順列を求めています。もしお分かりの方がいらっしゃいましたら、御教授願います。 m(_ _)m
引用返信/返信 削除キー/
■18146 / inTopicNo.2)  Re[1]: ランダム順列
□投稿者/ 明けの明星 -(2006/03/09(Thu) 17:29:21) [ID:ptfKNni4]
    まず要素の配列を作り、そのインデックスを『Ramdom』関数で決定。
    それを別の配列に格納し、元の配列の要素は消す。
    最大値を一つ減らした『Ramdom』関数で次のインデックスを決定。もし要素が無かったらランダムで決定された数に+1。それが無かったら…と繰り返し、配列の最後にまで来たら配列の一番始めから検索。
    これを繰り返す事で出来ると思いますが…非常に作業時間がかかると思います。
引用返信/返信 削除キー/
■18147 / inTopicNo.3)  Re[1]: ランダム順列
□投稿者/ Unnamed -(2006/03/09(Thu) 21:29:52) [ID:sUoinxLV]
    2006/03/09(Thu) 21:49:59 編集(投稿者)
    2006/03/09(Thu) 21:49:16 編集(投稿者)
    2006/03/09(Thu) 21:33:29 編集(投稿者)
    
     以下のようなアルゴリズムを作成してみました。参考になれば幸いです。
    
    ----
    
    
    プロローグ:
    	# 数列変数
    	local v
    	# 最小値と最大値と差分値
    	local index_min = 0
    	local index_max = 40
    	local step = 1
    	# 要素数
    	local n = (index_max - index_min) \ step
    
    	# 数列を作成
    	local i
    	for i = 0 to n
    		v[i] = i * step + index_min
    	next
    
    	ask v "シャッフル前"
    
    	# ランダムシャッフル
    	local temp x
    	local formed_n = n + 1
    	for i = 0 to n
    		# 全ての要素を、任意の他の要素と交換
    		x = Random(formed_n) - 1
    		if x != i then
    			temp = v[i]
    			v[i] = v[x]
    			v[x] = temp
    		endif
    	next
    
    	ask v "シャッフル後"
    quit
    
    

引用返信/返信 削除キー/
■18148 / inTopicNo.4)  Re[2]: ランダム順列
□投稿者/ 沙羅双樹 -(2006/03/10(Fri) 19:00:54) [ID:oMbuos4f]
    お二方レスありがとうございます!

    明けの明星さん
    すばやいレスをありがとうです。
    私も其処までは到達したのですよ……… _| ̄|○

    sUoinxLVさん……Unnamedと言うお名前なのでしょうか?
    ともかく、あのアルゴリズムは十分実用に耐えられるものです。
    早速解読しつつ使わせていただきます。

    お二人に感謝感謝。貴方達の行く上により多くの幸がありますように。
    それでは。
解決済み!
引用返信/返信 削除キー/



トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

Pass/

HOME HELP 新規作成 新着記事 トピック表示 検索 掲示板新着情報RSS配信新着情報 過去ログ

- Child Tree -
- Antispam Version -