• ベストアンサー

エクセル RAND関数について

こんばんは。エクセルの練習問題集をやっていて、意味のわからないものがあり教えてください! 問題は  0~100までの任意の整数を表示する関数式として適切なものは、次のうちどれか。     (1) =RAUND(RAND()*100,0)     (2) =INT(RAND()*100)     (3) =ROUND(RADIANS()*100,0)     (4) =INT(RADIANS()*100) というものです。 本では正解は(1)になっています。 でもこれ、(2)でもOKなのではないでしょうか? 実際にやってみて、(2)でも出来るじゃん!って思ってしまって、問題の真意がつかめないのです。 なぜ(2)は不適切なのか、どうか教えてくださいませ!

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

  • ベストアンサー
  • asciiz
  • ベストアンサー率70% (6662/9445)
回答No.3

後ろの方にも間違いがありましたので全文書き直します。申し訳ない… ---- rand( ) は、0から0.999…までの値を帰します。 これを100倍すると、0から99.99…までの値になります。 その値をint( )で切り捨てると、0~99までの整数値になります。つまり100が発生しません。 しかし、(1)の式は、int切り捨てではなくroundの四捨五入だから、確かに 0~100の値は出てきますが、0になるのは0~0.499…、100になるのは99.50~99.99…の値が発生したときなので、他の数値の半分の確率になってしまっています。 その4択から選ぶなら(1)しかありませんが、私なら、 「 =int(rand( )*101) 」 と書きますね。

j-komachi
質問者

お礼

おおおおおお~~~~! そういうことだったのですねえぇぇぇ! 感激っす!これですっきり出来ました! 本っ当にありがとうございました!

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • asciiz
  • ベストアンサー率70% (6662/9445)
回答No.2

1行目書き間違えました、 「rand() は、0から0.9999…までの値を帰します。」 です(汗

全文を見る
すると、全ての回答が全文表示されます。
  • asciiz
  • ベストアンサー率70% (6662/9445)
回答No.1

rand() は、0から9.999…までの値を帰します。 これを100倍すると、0から99.99…までの値になります。 その値をint()で切り捨てると、0~99までの整数値になります。つまり100が発生しません。 しかし、(1)の式は、int切り捨てではなくroundの四捨五入だから、0~100の値は出てきますが、0になるのは0~0.499…、100になるのは95.0~99.99…の値が発生したときなので、他の数値の半分の確率になってしまっています。 その4択から選ぶなら(1)しかありませんが、私なら、 「 =int(rand()*101) 」 と書きますね。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • rand関数について

    rand関数で取得した乱数を入力し、入力した逆の順番に表示しなさい、という問題があるのですが。一度乱数のプログラムを作り、その後逆に表示するプログラムというのは分かるのですが、そのあとがどうしても分かリません。 一般に、この場合は先ず。 #include <stdio.h> #include <stdlib.h> int main(void) { int i; for(i=1;i<==10;i++){ printf("%d",rand()%10+1); { return 0; } の表示をして、新たに逆にする表示をすると思うのですが、どのパターンを使うのが無難なのでしょうか? できれば 式を含めてお願いします。

  • エクセルで「乱数」を出す@関数は?

    「1-2-3」では、乱数を出す関数は「@INT(@RAND*400)+1」で1~400の間のアットランダムな乱数をさながらサイコロのように出すことが出来るのですが、エクセルではそういう関数があるのでしょうか? 是非教えて下さい。

  • エクセルVBAのRand()関数は?

    エクセルでマクロを書いているのですが Rand()関数を使用しようとするとエラーが起きてしまいます。。 アドインは全てインストールしているのですが、原因がわかりません。 知っている方しましたら、ご教授お願い致します。 ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ Private Sub btnCreate_Click() 'ループ用の行数。 maxQuestion = 30 'ランダム用の最大値 maxRowCnt = ActiveSheet.UsedRange.Rows.Count For i = 1 To maxQuestion 'ランダムでコピーし貼り付け Sheets("Answer").Select rndm = Int(rand() * (maxRowCnt - 1) + 1) Sheets("Answer").Range("A" & rndm & ":" & "C" & rndm).Select Selection.Copy Sheets("Question").Select Range("A" & i).Select ActiveSheet.Paste delCol = Int(rand() * (2 - 1) + 1) If (delCol = 1) Then Sheets("Question").Cells(i, 1).Value = "" Else Sheets("Question").Cells(i, 2).Value = "" End If Next i End Sub

  • エクセル関数

    エクセル関数を教えて下さい。 A×B=Cの計算でCが小数点以下の端数が出る場合、 答えのCを小数点以下を四捨五入して整数にする関数を教えて下さい。 CをROUND関数でDという整数に置き換えるのは分かりますが、乗算の答えCを同じセルで整数にしたいです。よろしくお願いします。

  • エクセルについて教えてください。

    エクセルは独学で覚えたので、曖昧に覚えてしまい困っています。よろしくお願いします。 エクセルの関数で ROUND関数があります。 ROUND は四捨五入 になると思いますが、 ある計算を ROUND でやり、答えを 四捨五入して整数で出します。 同じROUNDを使って、その計算を 5つ程度して その 出た(5つの) 答えを合計(SUM)します。 私はエクセルにあまり詳しくないので、分かりませんが、単純に ROUNDで整数にしたのだから、合計も整数で合うはずだと思うのですが、 なぜか、合計が 1 違う場合が多々あります。 説明が分かりにくくてすみません。 例えば、合計が 本来は 125  と ならなければならないのに、 ROUNDで出した 答えを すべて 合計(SUM)すると  126 とか 124 と 1つ ずれて表示されてしまいます。 私のROUNDに関する覚え方が間違っているのでしょうか? それから、ROUNDでだした 答えを 整数のままで足し算をして、合計が合うように計算をするにはどうしたらよいでしょうか? よろしくお願いします。

  • EXCELのINT関数・ROUNDDOWN関数について

    情報処理の問題で関数を使うように指示されました。 「国税=分配金×0.07(整数未満切り捨て)地方税=分配金×0.03(整数未満切り捨て)」 私はINT関数を使い答えを出しましたが、回答はROUDDOWN関数を使っています。 整数未満切捨ての場合は、INT関数を使うのがいいと思うのですが、ROUDDOWN関数を使うほうがいいのでしょうか。

  • EXCELの関数式(INT,MOD)で教えて下さい

    下図のようなEXCELの表があります。 金種計算で、1行目は1万円、5千円、千円・・・10円と入っており、 A2は計算したい金額(97810)を入れています。 B2セルの式=INT($A2/B1)、C2セルの式=INT(MOD($A2,B1)/C1)で、C2セルの式はD2~H2に複写しています。 EXCELで得た計算結果(2行目)は正しいと思うのですが、 D2,F2,H2の計算結果と、自分で計算した結果があいません。 ここを詳しく教えて頂けないでしょうか。 宜しくお願い致します! INT関数:整数部を返す MOD関数:剰余を返す  |  A  |  B |  C |  D |  E |  F |  G |  H | 1|   |10000| 5000| 1000| 500| 100|  50 |   10| 2|97810|   9|   1|   2|    1|   3|   0|   1| B2は、98710÷10000=9.7810→整数部を返すので「9」 C2は、97810÷10000=9.7810→剰余7810÷5000=1.562 →整数部を返すので「1」 D2は、97810÷5000=19.562→剰余562÷1000=0.562 →整数部を返すので「0」??? E2は、97810÷1000=97.810→剰余810÷500=1.62 →整数部を返すので「1」 F2は、97810÷500=195.62→剰余62÷100=0.62 →整数部を返すので「0」??? G2は、97810÷100=978.10→剰余10÷50=0.2 →整数部を返すので「0」 H2は、97810÷50=1956.2→剰余2÷10=0.2 →整数部を返すので「0」???

  • Excelで関数を使ったデータについて

    学校講師ですが生徒のテスト点数を Excelの関数で平均点を出して、その平均点をINT関数で整数にしました。そのデータをWordに移すと、平均点が少数のままでINT関数で加工したデータになっていません。Wordにそのまま移すのは無理なのでしょうか。

  • エクセルでA列とB列に=INT(RAND()*2)+1というランダムで

    エクセルでA列とB列に=INT(RAND()*2)+1というランダムで1か2しかでない式をつくり、例えばA1とB1の数字が同じで、A2とB2も同じで、それが15回連続つづいたら、C15に*を表示させるというような式を作りたいです。(IFですか?)

  • エクセルの関数について

    こんにちは。 エクセル関数でわからないところがあるので、教えてください。 Round関数で、四捨五入の小数点以下の表示を切っています。 そうすると、その合計を取ると、実際は表示は小数点以下が 切れていても、元の数字は小数点が残っているので 合計を出した時に端数が合いません。 =IF(E5=0,"",G5) このG5に当たる個所が、Round関数が入っていて 合計が合いません。 ちなみにG5には、=ROUND(C6,2) こんな式が入っています。 C6の数値が小数点になっています。 分かる方、教えてください。よろしくお願いいたします。

専門家に質問してみよう