[英]Math.random() in Java, how is this possible?
目前在課堂上,學習 Java 數學
老師給我看這個公式,我無語了?
if ((int)(Math.random() * 15) == 1) {
* 15 怎么可能是 1?
假設 Math.random 返回 0.08907633950002491
現在根據你的公式
0.08907633950002491*15 it returns 1.3361450925003737
在 int 類型轉換后它將是 1
( int)(Math.random() * 15) == 1 returns true
java.lang.Math.random() 返回一個帶正號的雙精度值,大於或等於 0.0 且小於 1.0。
x * 15 = 1
x = 1/15
所以 X 是區間 0-1 的雙精度值。 一切都是正確的。
這是因為轉換為整數
(int) Math.random()
當您轉換為一個整數時,您會看到 Math.random() 給出一個介於 0.0 和 1.0 之間的隨機數,您實際上是在說 - “扔掉所有小數位”
所以如果你有 0.5 做(int) Math.random()
會給你 0。
現在看看你的代碼,你會有這樣的東西
假設 Math.random() 給出 0.3,你就會有
((int)(0.3 * 15) == 1)
這將是((int)(4.5) == 1)
現在還記得轉換為int
作用嗎? 去掉小數位。 所以我們剩下if (4 == 1)
。
在這種情況下,條件將為假,因此 if 中的代碼不會運行,但有可能在相乘后得到 1.xx 之類的數字。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.