• ベストアンサー

Math.randomは0にはならない? 0になる

・意味が分からないコードがあるので教えてください ■コード for (var i = 0; i < 10; ++i) {  switch ((Math.random() * 4) | 0) {  case 0: hoge(); break;  case 1: …… ■質問 ・これはどういう処理をするコードでしょうか? ・「Math.random … 0 以上1未満」ということは0にはならないのでしょうか? なぜ「 | 0」? ・breakした場合、switchは抜けるけど、for文は継続?

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

  • ベストアンサー
  • kawais070
  • ベストアンサー率52% (2242/4283)
回答No.1

Math.random()は、 0 以上 1 未満 ということで、0 になることもあります。1にはなりません。 「 | 0 」は、0 と or でビット演算をするということですが、演算結果は整数となります。 Math.random()は、小数になるので、小数点以下を切り捨てるために、「 | 0」が付いているんですね。 breakは、switchのみを抜けます。breakが無いと、case 0の処理の後にcase 1の処理も実行してしまいます。

re97
質問者

お礼

回答ありがとうございました。 >「 | 0 」は、0 と or でビット演算をするということですが、演算結果は整数となります ・初めて知りました ・勉強になりましたー