- 締切済み
エクセルで0超1未満の乱数を発生する方法
タイトルの通りです。 EXCELのRAND関数は0以上1未満の乱数を発生しますが、0超1未満の乱数を作る方法を教えて下さい。 確率の検証用に乱数を作りたいのですが、0や1(0%や100%)は除きたいのです。もちろん非常に小さい数でも0でなければ採用したいのですが0だけはダメです。 実用上、RANDでも0は殆ど出ないとは思いますが…あるいは乱数を発生させておいて0になった時だけ再計算させれば良いのかもしれませんが、出来れば再計算無しで最初からそうしたいのです。
- みんなの回答 (6)
- 専門家の回答
みんなの回答
- kagakusuki
- ベストアンサー率51% (2610/5101)
パソコンが無い所に外出中のため動作確認が出来ていないのですが、下記のような関数は如何でしょうか? =(RAND()-RAND()+1)/2 確認出来ていないのですが、おそらく RAND()-RAND() の部分で「1未満~-1超」の乱数が発生するのではないかと思いますので、それに1を加えて「2未満~0超」の乱数に変換した上で2で割っています。
- msMike
- ベストアンサー率20% (368/1813)
》 RAND関数は0以上1未満の乱数を発生しますが、 》 0超1未満の乱数を作る方法を… =RAND() 関数こそが「0超1未満の乱数」を発生する、と信じていますが、私が間違ってるとする記事が見たなら是非ご紹介ください。 =RANDBETWEEN(0,10)/11 なら、「0以上1未満の乱数を発生します。
補足
バージョン2202のoffice365、EXCELのRAND()関数に関するヘルプ説明を引用します。 "説明 RANDでは、0以上で1より小さい実数の乱数を返します。 ワークシートが計算されるたびに、新しい実数の乱数がかえされます。"
- imogasi
- ベストアンサー率27% (4737/17070)
的外れな、ことをかいている。 乱数はRANDBETWEENで発生させられる。 WEB記事にもあるが、 =RANDBETWEEN(1,100) 1 から 100 までの範囲で乱数を取得します (可変) エクセル関数の本を読めば、RAND関数の付近に記事がある。読んでみたのかな。 ーー 小数点以下何桁の数を出したいのか書かないとダメでしょう。 ーー この関数を使って、この調子で、最小指定に0や10、100・を外して、乱数を発生させ、出てきた結果を、 0以上1未満の数になるように、10,100,1000,・・のうち適当な数(桁数による)で割り、0以上1未満の数になる数にすればよいのでは。 乱数とは、よく気安く言うが、非常に内容が難しく、特異な点(自動実行される、引数が必要ない、シードというモノも隠されている)もあるので、(小生もその程度なので)上記が誤りを含んでいないことを祈る。 ーー この質問には、その乱数の使いみち、その後の目的が書いてないが、多分深いことがある場合かもしれず、そちらの方が問題だろう。 寧ろエクセルなどは、数学勉強家には常識だと思うので、目的に関する、数学に関する質問コーナーに質問すべきと思った。
- asciiz
- ベストアンサー率70% (6849/9742)
>有効桁数ギリギリの一番小さい数字を加えるとかそういう事になるんでしょうか。 そうですね、有効数字15桁なので =0.000000000000001+RAND()*0.999999999999999 ぐらいが限界でしょうか…。
- Higurashi777
- ベストアンサー率63% (6316/9922)
乱数の桁数を指定して良いのであれば可能ですね。 例えば小数点以下3桁(0.001から0.999まで)の乱数を作りたいとすれば、=randbetween(1,999)/1000とすればOKです。 小数点以下5桁にしたいのであれば=randbetween(1,99999)/100000ですね。 以上、ご参考まで。
- asciiz
- ベストアンサー率70% (6849/9742)
底上げすれば良いでしょう。 こんな感じでどうでしょうか。 =0.1+rand()*0.9 このようにすれば、0.1~0.9999… までの乱数を発生することになります。 もう少し小さいところから欲しければ、 =0.00001+rand()*0.99999 こんな感じに、底上げ数 + 乱数範囲が1.0になるようにすればOKです。
お礼
ありがとうございます。 底上げは私も考えたのですが、エクセルが頑張れるいっぱいまでとなると、有効桁数ギリギリの一番小さい数字を加えるとかそういう事になるんでしょうか。
お礼
なるほど! 思いつきませんでした。 良いように思います。 私の方でも確認して使わせて頂きたいと思います。