次のような形の表に以下の条件にあった乱数を作成したいと思っています。
A列 問題番号(No.1~50)
B列 正解数 (1または2)
C列 選択肢の数
D列 正解番号 ※ここに乱数で以下の条件に合う数式を入れたい
<条件>
・列方向で見たとき、は同じ正解番号が3回以上続かないようにしたい (例:2,2,2・・・というのはNG)
・同じ正解番号が14個以上発生しないようにしたい(MAX50問くらいです)
・選択肢の数が複数の場合は「n,n」と同一セルに表示されるようにしたい。
(難しい場合は隣の列でも可)
現在、正解番号列に「=INT(RAND()*(選択肢の数)+1)」と入れるところで停滞してしまっています。
VBA等、いろいろネットで調べたのですが、具体的な解決に繋がるものがなくこちらに駆け込みました。
どうぞお知恵を貸して下さい。
よろしくお願い致します。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
問題の選択肢をランダムに入れ替えるということですよね。
まず選択肢の数は4か5で固定してください。
そうでなければ他の条件を満たすことは不可能です。
例として選択肢が3と5の問題がある場合、選択肢が5の答えは4か5に偏ることになります。
選択肢数を固定として作ることが可能なVBAは2通りあり
正解数を1に固定するか、14個以上の正解があるのはOKのどちらかになります。
正解数が1に固定の場合なら、50問分の正解パターンを用意して
それをランダムで選ぶ方式が考えられます。
QA(1)="12334324245323323223323423424"
QA(2)="12325432235423424353224233223"
のように200パターン位用意してこれを各問題の正解番号にセットする
逆に正解数を1or2で問題ごとに変えるなら、
3回以上続かないのと14個以上同じ正解番号がないは難しいです。
3回以上続かないのは条件に合致するまでLoopさせれば不可能ではないですが
14個以上同じ正解番号がない条件を加えると全体の番号を割り当ててから個数を確認して
NGならやり直しとなり無限ループに近い計算となりCPUに負荷がかかります。
正解数を1or2とする場合は少なくとも14個以上同じ正解番号がない条件は外してください。
上記の条件でよければVBAを組んでみますけど...
この回答への補足
回答ありがとうございます。
条件を全て満たすのは難しいのですね。
>正解数を1or2とする場合は少なくとも14個以上同じ正解番号がない条件は外してください。
>上記の条件でよければVBAを組んでみますけど...
正解数を1or2にする方を優先したいので、参考にさせて頂けますか?
文字数がオーバーする場合は、条件設定の部分だけでも結構です。
よろしくお願い致します。
No.1
- 回答日時:
正解番号は、乱数関数を含む数式で求めてはいけません。
>同じ正解番号が3回以上続かない
>同じ正解番号が14個以上発生しない
という条件を判定する為に、一度、そのセルに正解番号が入れられたら、2度と値が変わってはいけません。
しかし
>=INT(RAND()*(選択肢の数)+1)
のような乱数関数を含む数式を書くと「評価するたびに、正解が変化してしまう」ので、条件を正しく判定できません。
例えば、以下のような事が起きます。
1問目の回答が乱数で「2」になりました。
2問目の回答が乱数で「2」になりました。
3問目で、乱数が「2」になったので、1問目と2問目の回答が「2」かどうか調べました。すると1問目と2問目の式が再評価され、それぞれ新しい乱数で「1」と「3」が返って来て「2が3つ連続してないから大丈夫」と判断され、回答が「2」になりました。
ここで「最初に求めた値を採用する」と、3問連続で「2」が出てしまいます。
つまり「乱数関数は、番号を最初に新規に作る時だけ使用し、番号を再評価する場合は、最初に作られた値が返って来る」ようにしないとなりません。
言い換えれば「数式では無理。マクロを組むか、VBコードで書く必要がある」という事。
例えば、シート上に「回答成作」のコマンドボタンを置き、ボタンを押したらVBコードが呼び出され、正解番号列のセルに「乱数で作られた、正解番号を表す文字列」を書き込んで行くとか。
なお「正解が2個あるとき」に「1,2」とか「1,3」とか「2,5」とかにならないといけないので、正解番号列は「文字列」になっていなければなりません。
数式で書くのは「理論的に不可能」なので、今すぐVBコードの参考書を買って来ましょう。
因みに「VBのコードは、ここの解答欄の文字数では、どうやっても書き切れないくらいの文字数」になるので、回答不可能です。
回答ありがとうございます。
乱数の特性を理解していなかったので大変勉強になりました。
ご丁寧な解説、助かりました。
>例えば、シート上に「回答成作」のコマンドボタンを置き、ボタンを押したらVBコードが呼び出され、正解番号列のセルに「乱数で作られた、正解番号を表す文字列」を書き込んで行くとか。
なるほど!こちらのヒントを頂けただけでも質問させて頂いた収穫がありました。
VB初心者ですが、もう少し試行錯誤してみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAで早押しゲームを作りたい 4 2022/05/12 13:46
- Visual Basic(VBA) エクセルVBA 4 2022/05/14 00:51
- Excel(エクセル) SUMIFのIF分岐について 4 2023/04/15 12:57
- Excel(エクセル) Excel2007での条件付き書式について 6 2023/05/02 10:56
- Visual Basic(VBA) tatsumaru77様 昨日回答して頂いたものです。 すみませんが、昨日の質問で1つ補足があります 1 2022/05/15 15:06
- Java Java 南京錠 2 2023/02/04 11:46
- Excel(エクセル) 指定した条件でTRANSPOSE関数を使う 5 2023/08/18 19:45
- Excel(エクセル) <スプレッドシート>IF関数の複数条件について 5 2022/10/27 14:38
- Excel(エクセル) Excelの数式についての質問 1 2022/10/31 15:50
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2022/04/01 12:11
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
恥ずかしいですが、、、 パーセ...
-
「その後」の読み方
-
15問の問題で6割正解は、 何点...
-
コミュニケーションをとる?
-
100点問題で、60点取らなきゃ行...
-
○○様各位と○○各位はどちらが正...
-
専門調理師の学科試験は、真偽...
-
午前(中)は、AM11時59分59秒...
-
左二箇所のホチキス止めについて
-
167万円×40%っていくらですか?
-
文学部と法学部だと、どちらが...
-
法学部は忙しい?
-
「御会・御協会」の正しい読み...
-
法政大の法学部と社会学部
-
進学校生が志望するなら?京芸...
-
高校生です。法学部の魅力を教...
-
FPの試験を受けるのですが、学...
-
証券外務員2種に受かるためには...
-
漢字検定 名古屋会場について
-
京大法学部編入試験について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
恥ずかしいですが、、、 パーセ...
-
○○様各位と○○各位はどちらが正...
-
コミュニケーションをとる?
-
15問の問題で6割正解は、 何点...
-
専門調理師の学科試験は、真偽...
-
「その後」の読み方
-
左二箇所のホチキス止めについて
-
「いずれ」でも?「どれ」でも?
-
人に好かれる人物像の正解は?
-
言い方として しつこい?ひつ...
-
2進数11011110の回答を正解はBD...
-
タオルなどを使う時の裏表?
-
AIができて、利用するように...
-
100点問題で、60点取らなきゃ行...
-
167万円×40%っていくらですか?
-
人は、収まるところに収まると...
-
原稿用紙の綴じ方を教えて
-
質問の〆方
-
手榴弾は「しゅりゅうだん」?...
-
合格か否か
おすすめ情報