アプリ版:「スタンプのみでお礼する」機能のリリースについて

「Excel2003」を使用しています。

B1のセルに「=RANDBETWEEN(A1,A2)」
と入れて、ランダムな数字を出すように
しているのですが…
1度出た数字を、A2に入れた最大値の再計算回数を
超えるまでは、2度と出ないようにするという方法は
あるでしょうか?

つまり、最小値が「1」で最大値が「10」の場合、
10回再計算した場合、全て違う数字が出るように
したいのです。
(11回目からは当然重複してくるわけですが…)

マクロではなく、出来れば関数で
なんとかしたいのですが…
宜しくお願い致します。

A 回答 (1件)

エクセルの関数の質問で、永らく回答が入らないのはめづらしいですね。

難しい問題なのでしょう。
私には回答は判りません。後の方の批判を待ちます。
しかし、
RANDBERWEEN関数は、無関係のセルでも演算が行われるごとに、再計算されて、値が変ります。
ですから、同じ数があるかどうかの判別が難しいです。
多分(この問題自体が)不可能ではないかと問題提起します。
それと一旦出た乱数を、過去に同一数があるなどの条件によって、別数にしてしまうことは、厳密な意味で、乱数性を損なうのではと思いました。乱数性とは何か?私には
難しいですが。
これは数学理論と係わると思いますので、OKWEBコンピュタ
カテでは(今までの経験から)答えは頂けないだろうと思いますが。
------
便法として
1-12の順序がバラバラの数(順序数)を得たいとき、私は下記はどうかと思いました。
A1:A12にオートフィルで1、2、3、・・、12をいれる。
B列にB1に=RANDBETWEEN(10000,20000)といれる。
10000,20000は、まず同じ数字が発生しないであろうところの、1-12に比べて、圧倒的に大きい幅で指定する。
B12まで式を複写。
「編集」「形式を選択して貼りつけ」「値」で同一セルに複写して、B列の数を値化する(関数式を消す)。
A1:B12を範囲指定して、B列でソートする。
(結果)
319895
1017183
818943
110195
419274
715500
213502
516248
1114329
1216199
911100
617877
このA列の3、10、8・・・を求めるものとして使う。
    • good
    • 1
この回答へのお礼

>一旦出た乱数を、過去に同一数があるなどの
>条件によって、別数にしてしまうことは、
>厳密な意味で、乱数性を損なうのではと
>思いました。

なるほど…。
そんな事、思いもしませんでした(^-^;)。

imogasiさんが書いて下さった方法、面白いですね。
「こういうのも、発想力なんだなぁ」と、
感心してしまいました。

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

お礼日時:2004/08/15 18:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています