- 締切済み
条件付Excel乱数の作成について
次のような形の表に以下の条件にあった乱数を作成したいと思っています。 A列 問題番号(No.1~50) B列 正解数 (1または2) C列 選択肢の数 D列 正解番号 ※ここに乱数で以下の条件に合う数式を入れたい <条件> ・列方向で見たとき、は同じ正解番号が3回以上続かないようにしたい (例:2,2,2・・・というのはNG) ・同じ正解番号が14個以上発生しないようにしたい(MAX50問くらいです) ・選択肢の数が複数の場合は「n,n」と同一セルに表示されるようにしたい。 (難しい場合は隣の列でも可) 現在、正解番号列に「=INT(RAND()*(選択肢の数)+1)」と入れるところで停滞してしまっています。 VBA等、いろいろネットで調べたのですが、具体的な解決に繋がるものがなくこちらに駆け込みました。 どうぞお知恵を貸して下さい。 よろしくお願い致します。
- みんなの回答 (2)
- 専門家の回答
関連するQ&A
- 標準正規分布の乱数
RAND()関数は ((double)rand() / (1.0 + RAND_MAX))と定義します。 中心極限定理により、一様乱数を足し合わせると正規分布に近づくことから、 x = 分散 * (Σ[1~12]RAND() - 6) + 平均 で正規乱数が作れる。標準正規分布は分散1、平均0なのでその乱数は x = Σ[1~12]RAND() - 6 ですよね。この乱数を例えば100個羅列するにはどうしたらいいのでしょうか? もし間違ってたら指摘してください。 参考文献「Cによるシミュレーションプログラム 石川宏」 #include <stdio.h> #include <stdlib.h> #define RAND() ((double)rand() / (1.0 + RAND_MAX)) #define NUMBER 10000 /* 発生させる乱数の数 */ main(void) { int j; double u, x; srand(5); for (j = 0; j <= 11; j++) { u = u + RAND(); } x = u - 6.0; }
- ベストアンサー
- C・C++・C#
- 乱数について(C言語)
C言語において,乱数の範囲を 0 ≦ r < 1 とする場合には double r=(double)rand()/(RAND_MAX+1); とするのは知っているのですが0 < r ≦ 1にする場合の方法がわからず困っています. アドバイスいただきたいです.
- ベストアンサー
- その他(インターネット・Webサービス)
- 大きな数の乱数を作るには
C 初心者です。 表題のように、unsigned longのスケールの乱数をつくりたいんですが、以下のように記述すると値がいつも同じになります。この理由と、正しく動作するにはどう直したらいいのか教えてください。 unsigned long ul; ul = 4294967295UL * rand() / (RAND_MAX + 1); 値は常に131071でした。
- ベストアンサー
- C・C++・C#
- 乱数について
乱数の分布を見るために以下のようなプログラムを書きました。 #include <stdio.h> #include <stdlib.h> #include <math.h> int main() { int i,imax, S[RAND_MAX], r; double x,y; FILE *output1; output1=fopen("random2.data","w"); imax=100000; for(i=0;i<=imax;i++){ r = rand(); S[r] += 1; } for(i=0;i<=RAND_MAX;i++){ fprintf(output1,"%d %d \n",i,S[i]); } return 0; } するとコンパイルできて実行もできるのですが、なぜか乱数が30000を 超えるくらいのところでおかしな値になりました。 原因がわからないのでどなたか教えてください。
- ベストアンサー
- C・C++・C#
- Excel当番を条件付きで乱数で設定する方法
とあるパトロールに担当する人の割り振りをします。 メンバーから乱数で当番を割り振りをしたいのですが、複数条件がある場合どのような数式を入れるのでしょうか。 条件は以下の通りです。 (1) 一度巡回したら3日空けて割り振りをする(連続または3日以内にパトロールに割り振るのを避けたい) (2) 同じ部署同士でのパトロール・リーダー同士でのパトロールを避けたい (3) 乱数で割り振りをした後にリーダーがパトロール1になるようにしたい(リーダーでない人が一番上になるのを避けたい) (4) 先月パトロールした回数が3回の人は2回になるように割り振りたい。 乱数で当番を割り振る方法はインターネットの文献で拝見したのですが、条件付きで割り振る場合、どうすれば良いか悩んでいます。 担当者の個々人のスケジュールを一人ずつ確認し、割り振りをしていましたが時間をかなり要してしまい、効率化を図りたいと思い質問させて頂きました。 詳しい方いましたらご教授ください。 よろしくお願いいたします。
- ベストアンサー
- Excel(エクセル)
- エクセル 任意の数字から始まる重複しない乱数
お世話になります。 エクセル2003/XP 使用です。 RANK関数またはそれに似た利用方法でご教授願いします。 下記ページを参考に、"重複しない乱数”を作成しました。 http://www.relief.jp/itnote/archives/001798.php (ページ中程、▼操作手順:重複しない乱数を作成する 以下の部分) 乱数の最初の数字が1から始まる分には問題なくできるのですが、 乱数の数字を、「任意の数字から始めて」、 「任意の数字で終わる」ようにすることは可能でしょうか? 例えば、下記の例でいうと、 6から始まり10で終わる乱数です。 A列 B列 1行目 / =RAND() / 1-5の範囲でランダムな重複しない乱数 2行目 / =RAND() / 同上 3行目 / =RAND() / 同上 4行目 / =RAND() / 同上 5行目 / =RAND() / 同上 ------------------------------------------------------------ 6行目 / =RAND() / 6-10の範囲でランダムな重複しない乱数 7行目 / =RAND() / 同上 8行目 / =RAND() / 同上 9行目 / =RAND() / 同上 10行目 / =RAND() /同上 (11以下、繰り返し 略) よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- MATLABの乱数生成関数 rand( ) について
一様乱数を生成する関数rand()について ・Y = rand(n); ・rand('state',sum(100*clock)); Y = rand(n); という2つのやり方があるようなのですが,以下のmatlabの関数の説明 のページをみても2つの違いが理解できません. http://infoshako.sk.tsukuba.ac.jp/ShakoDoc/MATLAB5/jhelp/techdoc/ref/rand.html どういう違いがあるのでしょうか? また,この関数は[0,1]の一様乱数としていますが,[-a,a]みたいに範囲指定はできないのでしょうか? 回答よろしくお願いします.
- ベストアンサー
- その他(プログラミング・開発)
- 乱数発生
#include <stdio.h> #include <stdlib.h> #include <time.h> int main(void) {int y, m, l; srand( (unsigned)time( NULL ) ); y=rand() % 2500 + 1600; m=rand() % 12 + 1; l=rand() % 29 + 1; printf("西暦%d年%d月%d日",y,m,l); return(0); }今回は乱数発生でランダムにだされた西暦年月日をつくりましたが、y=rand() % 2500 + 1600; というのがありこれはyという乱数が2500以下1600以上という意味なのですがなぜかプログラムを実行しても3000いくつとか4000いくつなんてのもでてきます。m=rand() % 12 + 1;はちゃんと12以下1以上でできるのですがなぜですか?本当にわかりません。是非だれか教えてください。
- ベストアンサー
- C・C++・C#
補足
回答ありがとうございます。 条件を全て満たすのは難しいのですね。 >正解数を1or2とする場合は少なくとも14個以上同じ正解番号がない条件は外してください。 >上記の条件でよければVBAを組んでみますけど... 正解数を1or2にする方を優先したいので、参考にさせて頂けますか? 文字数がオーバーする場合は、条件設定の部分だけでも結構です。 よろしくお願い致します。