• ベストアンサー

ランダム関数で任意の桁数のランダム数字を作りたい

エクセル2000ユーザーです。ランダム関数を使い、重複を許さない5桁のランダム数字を1000個作りたいと思っています。randbetween関数を使おうと思ったのですが、2000では使えないのか、NAMEといったエラー表示がでます。5桁の中は同じ数字がでてきても構いません。例:11295、43634、70676・・・etc。 が、1000個の中では同じ数字が重複しないようにしたいです。 =RIGHT(RAND(),5) のように考えたのですが、他にいい方法はありますでしょうか? マクロやVBAは苦手なので、できれば関数でいいやり方があれば教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • korapisi
  • ベストアンサー率45% (16/35)
回答No.3

=RIGHT(RAND(),5) だと、末尾に0が連続するようなケースで不正な結果になってしまう可能性があります。 =RIGHT(INT(100000+100000*RAND()),5) というのはどうでしょうか? それから、1000/100000なので確率は低いかもしれませんが、重複はありえます。(100個に1個ぐらい) 1100個ぐらい生成して、重複するものは排除してください。

xyz123hanri
質問者

お礼

なるほど、そういう方法があるのですね。とても参考になりました!ありがとうございました。

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.4

RAND()*(上限ー下限)+下限 です。 重複出現なしとランダム性とは関係ないことなので、別のロジックで、限りなくそれに近い方法を勉強するほか無い。 乱数理論も難しく、エクセルしか使えないレベルではそのアルゴリズムを考え出しプログラムを作るのは難しいと思う。 さらに知りたいなら、数理のカテゴリに質問して、聞いてみるとかあるかとおもう。しかし回答が出ても、その用語や理論付けなど理解できない恐れが多い。 即時(リアルタイム)でないなら、エクセルのある列に行番号とともに乱数(もちろん重複アリ)をRANDOM関数で出し、値かして式を消し、乱数の列でソートして、行番号を乱数とするのもありえる。 同じ値もソートすると、何とか別行になり、行番号は違う数値になるから。 2007で無いと6万(行)以上の場合(本件)は出来ないが。 4桁2桁でやり結合するとか。 ただし出来た数字のランダム性の数学的な検証法などはわからない。 ーー それと、RANDBETWEENはアドイン関数 http://www.relief.jp/itnote/archives/001184.php の>[分析ツール]に含まれる関数ですから、利用するためには[分析ツール]アドインの組み込みが必要です。 辺りに注意。

xyz123hanri
質問者

お礼

丁寧なご回答ありがとうございます。まだまだ知識不足でこれからもっと勉強します。。ありがとうございました!

回答No.2

1000個の中で重複しないように…というのは簡単には思いつきませんでしたが、質問者さんはRANDBETWEEN関数を使って解決する方法は思いつかれているようなので、以下参考にしてもらえれば。 RANDBETWEEN関数を使って解決できるのなら、「分析ツール」アドインを組み込めば良いと思います。分析ツールが使えなければ =INT(RAND()*90000)+10000 が同じ結果になると思います。

xyz123hanri
質問者

お礼

アドインの組み込みできました。早いご回答とても感謝しています。ありがとうございました。

回答No.1

「ツール」→ 「アドイン」→ 「分析ツール」にチェックを入れて「OK」でrandbetween関数が使えるようになると思いますけど・・・

xyz123hanri
質問者

お礼

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

関連するQ&A

  • Excel2002 ランダムに並べ替える関数

    Excel2002で掛算九九の100マス計算を作っています。 マクロを使って、ボタンにマクロを登録し、九九の問題を作成したいのです。 1~10の数字をランダムに重複しないように、A1:J1に表示したいです。 A B C D E 1 9 7 8 1 2・・・ 2 2 3 8 4 1 5 4 でA1:J1の1~10の数字ををランダムに並び替えたいのですが、そういった関数はありますか? RANDBETWEEN関数を使ってみたんですが、重複する数字が返ってきてしまいます。 何か良い方法はありますか?

  • Excelでロト6の数字を決めたい

    Excel関数を使って、「1~43の数字から重複しない6個の数字を算出する」方法ってありますか?マクロはよくわからないので関数で出したいです。いろいろ調べて、「RAND」とか「RANDBETWEEN」を使うといいとわかったのですが、「重複しない」ようにすることができません。お分かりになる方いらしたら、ぜひ教えて下さい。ずっと考えていたら頭が痛くなってきました・・・。

  • 関数 ランダム 指定した条件

    よろしくお願いします! =INT((10-1+1)*Rand()+1) のようにすれば、1~10までのランダムな数字が入力できる訳ですが、例えば2,3,5,7のように指定した数字からランダムで入力(選択)させることを関数を使って行う事は出来るのでしょうか? マクロを使わないと無理でしょうか? 全く別件ですが、Rand()の()内に何か入力して使う機会というのはあるのでしょうか?

  • エクセルで、乱数の関数 同じ数が無いように

    乱数を発生させる関数で、RAND関数は、小数点(0~1の間)で、RANDBETWEEN関数は整数で出るとのことですが、RANDBETWEEN関数は同じ数字がいくつか重複して出ます。整数で同じ数が出ないようにする関数はないでしょうか?

  • エクセルで3ケタの乱数

    今度くじ引き大会をするのに3ケタの数字を250名ほどに配りたいのですが、それぞれの数字が重複なくかつ各桁数の数字が重複しないで乱数をエクセルで生成する方法を教えてください。(例えば、101,221,199などは除外したいです) RAND,RANDBETWEEN関数を使ってみましたが、重複してしまうし、221などのような各桁で数字が重複してしまうものができてしまうのでうまくいきません。 よろしくお願いします。

  • 「=RANDBETWEEN」で、同じ数字を出さないようにしたいのですが。

    「Excel2003」を使用しています。 B1のセルに「=RANDBETWEEN(A1,A2)」 と入れて、ランダムな数字を出すように しているのですが… 1度出た数字を、A2に入れた最大値の再計算回数を 超えるまでは、2度と出ないようにするという方法は あるでしょうか? つまり、最小値が「1」で最大値が「10」の場合、 10回再計算した場合、全て違う数字が出るように したいのです。 (11回目からは当然重複してくるわけですが…) マクロではなく、出来れば関数で なんとかしたいのですが… 宜しくお願い致します。

  • エクセル 任意の数字から始まる重複しない乱数

    お世話になります。 エクセル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以下、繰り返し 略) よろしくお願いします。

  • エクセルで条件付きランダム化を行う方法

    はじめまして。 エクセル初級者です(2007ユーザー)。 なるべくマクロ関数を使わずに、条件付きのランダム化をする方法を探しています。 具体的には、1~5の数字をランダムに並べる際、1度も重複せずに並べたいと思っています。  例) 5, 3, 2, 4 ,1  / 2, 1, 4, 3, 5 などなど どうもラテン方陣というものを作るのが1番早いようですが、 今一つ作り方が分かりません。 上記どちらでもかまいませんので、もしご存知の方がいらっしゃいましたら教えてください。 よろしくお願いします。

  • EXCELの並べ替えとランダムについて

    ABCDEFGを一つのグループとして、ランダムに並べ替え それぞれのアルファベットに1234のいずれかの数字を 付加するという作業をしています。 例 CEGDBAF GDBEACF … 1433212 3224312 … 今は、ABCDEFGにRANDで数字をつけ、昇順で並び替え それに、RANDBETWEEN(1,4)で得た数字をつけていくという 作業をしているのですが、グループの数が多い場合 この方法だと限界があると思いました。 何かまとめてできる方法がありましたら 教えていただきたく思います。 よろしくお願いします。

  • Rand関数を使って

    A1のセルに=int(rand()*100+1)という関数を使って1から100までのランダムな数字を入れるようにしました。A2からA101までに連続した 1~100までの数字が入力してあります。 B列には、氏名が入力してあります。 で、A1に出たランダムな数値の行に色をつけたいのですが、マクロの書き方がわかりません。 どなたか教えていただけないでしょうか。 よろしくお願いいたします。

専門家に質問してみよう