なぜ誰かが結果を求めるMath.floor
のでしょうMath.random
か?私はそれが次のように使用されているのを見ました:
Math.floor(Math.random() * num);
誰か説明してもらえますか?
なぜ誰かが結果を求めるMath.floor
のでしょうMath.random
か?私はそれが次のように使用されているのを見ました:
Math.floor(Math.random() * num);
誰か説明してもらえますか?
Math.random
0 から 1 の間の浮動小数点数を返します。
[0, 1) の範囲、つまり 0 (含む) から 1 (含まない) までの浮動小数点の疑似乱数を返します。これを目的の範囲にスケーリングできます。
これに n を掛けると、0 (含む) と n (含まない) の間の浮動小数点数が得られます。
Math.floor
次に、この浮動小数点数を0 から n - 1 (両端を含む)の整数に変換するために使用されます。
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() * num
0 を含むが num を含まない 0 から num までのランダムな 10 進数を返します。したがって、num が 10 の場合、 が得られる可能性があります3.8548569372
。
Math.floor(Math.random() * num))
0 を含むが num を含まない、0 から num までのランダムな整数を返します。だから、それはあなたに与えるかもしれません3
。
Math.floor()
10 進数を整数部分だけに切り捨てます。ランダムな整数は、配列 (整数である必要があります) からランダムな値を取得するためによく使用されます。
Math.random()
長いランダムな小数が得られます。通常、その小数に 10、100、1000 などを掛けて、ランダムな整数を取得します。ただし、このような小数は非常に長いため、絶対整数を取得するには、Math.floor()
その数値を切り捨てます。
なぜ と組み合わせるMath.floor
のMath.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
多田:)
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] の間の数値を生成します
0 から (最大 - 1) までの整数の乱数を取得するために使用されます。
一方、次のように使用する方が高速| 0
です
const randomInt = Math.random() * num | 0;
は| 0
バイナリまたは0 であり、JavaScript の仕様では、実行前に結果が整数に変換されると効果的に述べられてい|
ます。| 0
と同じではないことに注意してくださいMath.floor
。 | 0
0 に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