0

私たちは皆古き良きことを知っていMath.random()ます。0から1までのランダムな浮動小数点数を返します。

私が証拠を見つけることができないように見えるのは、0または1が排他的または包括的であるかどうかです。

それらが包括的である場合、これらの値のいずれかをヒットする可能性は非常に低いことを私は知っています。

しかし、私はそれを探しているifステートメントを無駄にするべきかどうか疑問に思わずにはいられません。

私の現在のシナリオでは、ゼロは問題ではありませんが、1つは問題です。

var __rand:uint = Math.floor( Math.random() * myArray.length );
var result:String = myArray[__rand];

1Math.random()が排他的である場合、それが1になることは決してないので、__ randは決して等しくなることはなくmyArray.length、常にそれより下にある必要があります。しかし、パフォーマンスが重要なコードで時間を無駄にする必要があるかどうかはわかりませんでした。それを説明します。

PS:上記のコードはパフォーマンスが重要なコードではなく、単なる例です

基本的に、2つの簡単な質問です。1)1つを返すことは不可能または可能です。2)可能であれば、それを説明する価値はありますか。

4

2 に答える 2

6

ドキュメントによると:

疑似乱数nを返します。ここで、0 <= n <1です。返される数値は非公開の方法で計算され、計算には必然的に非ランダム性の要素が含まれるため、「疑似乱数」になります。

したがって、0にすることはできますが、1にすることはできません。インデックスが範囲外であることを心配する必要はありません。

ちなみに、これが本当にパフォーマンスが重要なコードである場合は、Math.floorを使用するよりも、値をintまたはuintとしてキャストする方が適切です(このパフォーマンステストを参照)。

于 2013-01-03T15:20:30.023 に答える
4

Math.randomは、0から(1を除く)までの数値を返します。1を返すことはありません。

于 2013-01-03T15:20:18.203 に答える