簡體   English   中英

math.random一直給我0

[英]math.random keeps giving me 0

我偶然發現了這個問題,而不是給我最小,最大之外的隨機數,而是每次給我0! 在此特定時刻,最小值為0(被動),最大值為1.02

我的主app.js文件中的Heres變量:

var randomTicket = helper.getRandomInt(0, g_Totalcost);

這是助手中的功能:

var getRandomInt = function(min, max) { 
    return Math.floor(Math.random() * (max - min + 1)) + min;
};

嘗試g_Totalcost轉換(或轉換為浮點值)參數g_Totalcost

 var randomTicket = helper.getRandomInt(0, parseFloat(g_Totalcost));

或者,強制轉換函數的參數:

var getRandomInt = function(min, max) { 
    return Math.floor(Math.random() * (parseFloat(max) - parseFloat(min) + 1)) + parseFloat(min);
};

我認為您需要添加某種類型的驗證來防止非整數輸入,否則該功能將無法正常運行。

我的猜測是您在函數開始時忘記了以下幾行:

min = Math.ceil(min);
max = Math.floor(max);

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Math/random

這是一些支持分析。

return Math.floor(Math.random() * (1.02 - 0 + 1)) + 0;

簡化為

return Math.floor(Math.random() * (2.02));

Math.random()返回介於0(含)和1(不含)之間的數字

因此,讓我們根據Math.random()的值計算一些可能的結果。

  • 對於Math.random()== 0,結果為0
  • 對於Math.random()== 0.45,結果為0
  • 對於Math.random()== 0.4999,結果為1
  • 對於Math.random()== 0.5,結果為1
  • 對於Math.random()== 0.9,結果為1
  • 對於Math.random()== 0.99,結果為1
  • 對於Math.random()== 0.999,結果為2
  • 對於Math.random()== 0.9999999999999999,結果為2

暫無
暫無

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

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