簡體   English   中英

嘿! 為什么我的 Javascript 代碼不起作用

[英]Hey! Why my Javascript code is not working

我試圖在 Javascript 中創建一個 function ,它將在兩個整數(包括兩者)之間給出一個隨機的 integer 。 但是,不幸的是,這不包括第一個 integer。 代碼如下:

const randomEjector = (num1,num2) => {return Math.ceil(Math.random() * (num2 - num1)) + num1}

我正在考慮不平等的類比。
++ 讓我們考慮一下,( Math.random()將 output 一個介於 0(包括)和 1(不包括)之間的數字)。
假設x = Math.random() ,那么x∈[0,1)
所以, 0 ≤ x < 1
0 * (num2-num1) ≤ x * (num2-num1) < 1 * (num2-num1)
同樣, x*(num2-num1)∈[0,1*(num2-num1))
現在打開Math.ceil()部分:
但是, Math.ceil()就像最大的 integer function
因此,對於(0,1] 它將返回 1
對於0 => 0
對於interval ((num2-num1)-1,(num2-num1)) ,它將返回(num2-num1)
因此,在執行Math.ceil()之后,我們應該留下一個區間[0,(num2-num1)]
現在, x*num2-num1[0,(num2-num1)]
最后, let y = x*(num2-num1)
所以, 0 ≤ y ≤ (num2-num1)
所以, 0 + num1 ≤ y + num1 ≤ (num2-num1) + num1
這將給出num1 ≤ y + num1 ≤ num2
讓, z = y + num1
所以, z ∈ [num1,num2]
那么,為什么我的 function 不包括第一個術語並使其像(num1,num2)?
問題出在哪里?
例如對於console.log(randomEjector(3,4)) ,它總是給出 4 而從不給出 3。

Math.random()不太可能准確地返回 0,因此Math.ceil(Math.random())可能總是返回 1。

換句話說, randomEjector(3,4)會在非常非常藍的月亮中給你 3。

它返回 4,因為您總是對結果進行上限,如果您希望它返回 4,那么您需要對結果進行下限。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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