質問: エクセル2000ユーザーです。ランダム関数を使い、重複を許さない5桁のランダム数字を1000個作りたいと思っています。randbetween関数を使おうと思ったのですが、2000では使えないのか、NAMEといったエラー表示がでます。5桁の中は同じ数字がでてきても構いません。例:11295、43634、70676・・・etc。 が、1000個の中では同じ数字が重複しないようにしたいです。 =RIGHT(RAND(),5) のように考えたのですが、他にいい方法はありますでしょうか? マクロやVBAは苦手なので、できれば関数でいいやり方があれば教えてください。
回答: RAND()*(上限ー下限)+下限 です。 重複出現なしとランダム性とは関係ないことなので、別のロジックで、限りなくそれに近い方法を勉強するほか無い。 乱数理論も難しく、エクセルしか使えないレベルではそのアルゴリズムを考え出しプログラムを作るのは難しいと思う。 さらに知りたいなら、数理のカテゴリに質問して、聞いてみるとかあるかとおもう。しかし回答が出ても、その用語や理論付けなど理解できない恐れが多い。 即時(リアルタイム)でないなら、エクセルのある列に行番号とともに乱数(もちろん重複アリ)をRANDOM関数で出し、値かして式を消し、乱数の列でソートして、行番号を乱数とするのもありえる。 同じ値もソートすると、何とか別行になり、行番号は違う数値になるから。 2007で無いと6万(行)以上の場合(本件)は出来ないが。 4桁2桁でやり結合するとか。 ただし出来た数字のランダム性の数学的な検証法などはわからない。 ーー それと、RANDBETWEENはアドイン関数 の>[分析ツール]に含まれる関数ですから、利用するためには[分析ツール]アドインの組み込みが必要です。 辺りに注意。