人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

お知恵を貸してください。ASP (Active Server Pages)にて、データベース上にある問題をシャッフルして出そうと思っています。Randomizeだと同じ問題が2度でてしまうと思うのですが、何かよい方法はありますでしょうか。PHPにはshaffleがあると思いますが、aspではうまくできません。ご教示ください。

●質問者: qwu10076
●カテゴリ:コンピュータ 学習・教育
✍キーワード:Active ASP Pages PHP シャッフル
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● spyglass
●160ポイント

http://www.hatena.ne.jp/1131187666#

人力検索はてな - お知恵を貸してください。ASP (Active Server Pages)にて、データベース上にある問題をシャッフルして出そうと思っています。Randomizeだと同じ問題が2度でてしまうと思う..

URLはダミーです。


考え方として参考になればと思います。

出題した問題にはフラグを立てて再度出題に出たときは読み飛ばしてはいかがでしょうか?

フラグはIPアドレス等にすれば他の方が見に来られても「同一ユーザではない」と判断出来ると思います。


検討違いならすみません。

◎質問者からの返答

ありがとうございました。できれば「出題済み」のフラグをDBに書き込まないようにしたいとは思っていたのですが(回答者が増えるとDBが重くなるので。)ただし、この方法も一案ですね。


2 ● tailliar
●160ポイント

http://www.site-cooler.com/tips/asp_random.htm

[ASP] 乱数を生成する

ASPの言語は何をお使いでしょうか?

ほとんどの場合VBか、.NETならVB.NETかC#.NETをお使いだと思いますが、いずれにしてもまず乱数の初期化を行っていますでしょうか?Datetime.Now なんかで初期化するのが常套手段です。

DBから取ってくる際に・・・なら、例えばまずレコード数を取得しておいて、0<x and x<レコードカウント の値を乱数で取得、なんらかの固定値でORDER BYしたものからRANK(x)でとってやるとか色々方法はありそうです。

◎質問者からの返答

ありがとうございました。「残りの問題数」でランダム化をするんですね。それをRANKで取ってくるんですね。助かりました。


3 ● masshie
●160ポイント

http://dummy/

ASPについてはまったく知りませんが、m個の要素からn個をランダムに抜き出すアルゴリズムを示します。

1) r=1..m に対して、a[r]=r という配列をつくります。

2) 十分大きい回数 i (およそmの2倍以上)だけ、1..mのあいだの2個の乱数 x, yを発生させ、a[x]とa[y]の値を入れ替えます

( tmp=a[x] ; a[x]=a[y] ; a[y]=tmp )

3) a[1] .. a[n] を取り出し、問題番号とします。


図説:

(1) a=[1,2,3,4,5,6,7,8]

(2) a=[5,3,6,1,8,7,2,4]

(3) a=[5,3,6,1,8]

◎質問者からの返答

ありがとうございました。たすかりました。


4 ● B-Trumpet
●160ポイント

http://www.hatena.ne.jp/1131187666

人力検索はてな - お知恵を貸してください。ASP (Active Server Pages)にて、データベース上にある問題をシャッフルして出そうと思っています。Randomizeだと同じ問題が2度でてしまうと思う..

URLはダミーです


問題の順序をあらわすフィールドを追加し、処理の最初(最初に問題を出す時になるでしょうか)にそれをASPでシャッフルしてはどうでしょう。

配列に問題のindexをいれてある程度の回数SWAPしたら適度に混ざると思います。

◎質問者からの返答

ありがとうございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ