簡體   English   中英

Java 中的 Math.random(),這怎么可能?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM