13

なぜ誰かが結果を求めるMath.floorのでしょうMath.randomか?私はそれが次のように使用されているのを見ました:

Math.floor(Math.random() * num);

誰か説明してもらえますか?

4

7 に答える 7

19

Math.random0 から 1 の間の浮動小数点数を返します。

[0, 1) の範囲、つまり 0 (含む) から 1 (含まない) までの浮動小数点の疑似乱数を返します。これを目的の範囲にスケーリングできます。

これに n を掛けると、0 (含む) と n (含まない) の間の浮動小数点数が得られます。

Math.floor次に、この浮動小数点数を0 から n - 1 (両端を含む)の整数に変換するために使用されます。

于 2011-11-03T22:41:55.193 に答える
17

Math.random の結果に対して Math.floor を呼び出すのはなぜでしょうか?

一言で言えば、Math.floor()10 進数値を最も近い整数に切り捨てたいときに呼び出します (小数部分を削除するだけです。つまり、3.9 は 3 になり、2.1 は 2 になります。などなど)。したがって、通常、必要なときにそれを使用します。整数で、10 進値以下の整数が必要な場合. 数学ライブラリにはMath.ceil()Math.round(). もありMath.ceil()、次に大きい整数を取得し、近い方Math.round()に応じて上下する最も近い整数に丸めます。

私はそれが次のように使用されているのを見てきました: Math.floor(Math.random() * num);

個々Math.floor(Math.Random() * num)の部分に分解し、各部分を説明すると、次のようになります。

Math.random()は、0 を含み 1 を含まない 0 から 1 の間のランダムな 10 進数を返します0.38548569372

Math.random() * num0 を含むが num を含まない 0 から num までのランダムな 10 進数を返します。したがって、num が 10 の場合、 が得られる可能性があります3.8548569372

Math.floor(Math.random() * num))0 を含むが num を含まない、0 から num までのランダムな整数を返します。だから、それはあなたに与えるかもしれません3

Math.floor()10 進数を整数部分だけに切り捨てます。ランダムな整数は、配列 (整数である必要があります) からランダムな値を取得するためによく使用されます。

于 2011-11-03T22:45:25.703 に答える
2

Math.random()長いランダムな小数が得られます。通常、その小数に 10、100、1000 などを掛けて、ランダムな整数を取得します。ただし、このような小数は非常に長いため、絶対整数を取得するには、Math.floor()その数値を切り捨てます。

于 2011-11-03T22:43:04.300 に答える
2

なぜ と組み合わせるMath.floorMath.randomですか?

そうしないと浮動小数点数が返されるため、それらを結合します。Math.floor を使用すると、指定された範囲内の整数であることを確認できます。

Math.random は、0 から 1 の間のフラットを返します。それを自分numの範囲または最大範囲で乗算すると、その数値 (1 * ) の最大値を持つ値が得られますnum。繰り返しますが、Math.floor は強制的に整数にするだけです。


舞台裏:

乱数 -> .35 -> 11 の最大 ( num) 倍 -> 3.85 を取得 -> Math.floor(3.85) -> 3.


覚えておいてくださいnum、MAX + 1です。5 に設定numすると、1 ~ 4 の数字のみが生成されます。


詳細については、このリンクをチェックしてください: http://www.javascriptkit.com/javatutors/randomnum.shtml

多田:)

于 2011-11-03T22:43:28.820 に答える
1

Math.random()0.8747230430599302[0,1) の間のようなものを返します

.floor最も近い整数に丸めるために使用します。例えば:

Math.random()*5 == 2.5889716914389282 これにより、[0,5) の間の数値が生成されます。

Math.floor(Math.random()*5) == 2 //in this scenario [0,4] の間の数値を生成します

于 2011-11-03T22:43:53.473 に答える
1

0 から (最大 - 1) までの整数の乱数を取得するために使用されます。

一方、次のように使用する方が高速| 0です

const randomInt = Math.random() * num | 0;

| 0バイナリまたは0 であり、JavaScript の仕様では、実行前に結果が整数に変換されると効果的に述べられてい|ます。| 0と同じではないことに注意してくださいMath.floor| 00 にMath.floor丸めますが、切り捨てます。

         | 0   Math.floor         
------+------+------------
  2.5 |   2  |   2
  1.5 |   1  |   1
  0.5 |   0  |   0
 -0.5 |   0  |  -1
 -1.5 |  -1  |  -2
 -2.5 |  -2  |  -3
于 2017-04-06T23:24:33.623 に答える