Math.random()从0返回到1独占的重点是什么?

时间:2016-06-02 16:21:16

标签: random

<com.google.android.gms.ads.AdView android:id="@+id/adView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="false" android:layout_centerHorizontal="true" android:layout_alignParentBottom="true" ads:adSize="INTERSTITIAL" ads:adUnitId="@string/banner_ad_unit_id"> </com.google.android.gms.ads.AdView> 在我的控制台中的二进制点之后返回一个17位数的数字,因此它恰好为0的概率是天文数字低。它究竟是什么意思到技术上可以是0但永远不可能是1,当它基本上永远不会返回这些数字时呢?是什么导致了这个?有人可以给我一些例子Math.random()的这个属性是否相关?

1 个答案:

答案 0 :(得分:0)

通常,为了产生随机浮点值,首先生成随机整数,然后将其缩放到浮点范围。由于浮点值的二进制表示,在0和1之间存在两个幂均匀分布的值,不包括1.0。如果你确实包含1.0那么范围是2加1的幂;并且在这样的范围内生成均匀的随机整数要困难得多。

除此之外,返回1.0只会导致问题。在你将它乘以一个常数之后,你最终获得了极小的机会,但仍然有机会获得完全恒定的机会。即使在使用舍入到最接近的数量进行量化之后,与任何其他值相比,仍然只有一半的出现机会(零除外,这也会受到相同的惩罚)。

因此,它更容易做,更有用。

那就是说,对于完美均匀分布来说,这不是一个大惊小怪的地方。简单地通过将浮点值(通过常量限制为某些有限值集)乘以常数并对结果进行量化,您最终会得到一些比其他结果稍微(不可测量)的结果。