math.random,尝试画最后一个数字

math.random in javascript, try to draw the last number

提问人:lucaasantos 提问时间:8/16/2023 更新时间:8/18/2023 访问量:44

问:

我在 javascript 中创建了一个函数来绘制数字,但它不绘制最后一个数字,用户通知 1 到 20,它只绘制 1 到 19。

function rand (min=0, max){
    const valor = Math.random() * (max - min) + min
    return Math.floor(valor)
}

function gerar(){
const min = Number(document.getElementById("minimo").value)
const max = Number(document.getElementById("maximo").value)

我尝试 min=0 或 min=1 但不起作用。

JavaScript 函数 数学 随机 抽奖

评论

0赞 cantdocpp 8/16/2023
我能知道最大值吗?你能做到吗?console.log(max)
1赞 Jaromanda X 8/16/2023
const valor = Math.random() * (max - min + 1) + min因为您想要的值数是 20 ...即20 - 1 + 1

答:

1赞 Vikas Saini 8/16/2023 #1

似乎需要小的更改,对于您正在使用的方程式,您需要传递 [max + 1] 以包含最大数量,或者使用方程式更改函数

(Math.random() * (maximum - minimum + 1) ) << 0

左移运算 0 有效地截断浮点数的小数部分,留下一个整数。这之所以有效,是因为 JavaScript 中的按位运算会自动将其操作数转换为 32 位整数,并且移动 0 不会更改值,但会导致转换为整数。

评论中的更多详细信息,感谢@Mike 'Pomax' Kamermans

任何一个都适合您。

评论

0赞 Mike 'Pomax' Kamermans 8/17/2023
切勿在不解释为什么显示位移位的情况下使用位移位。
0赞 Vikas Saini 8/17/2023
左移运算 0 有效地截断浮点数的小数部分,留下一个整数。
1赞 Mike 'Pomax' Kamermans 8/17/2023
在您的回答中,而不是在评论中。你不是在告诉“我”,你是在告诉所有阅读这个答案的人=) (还要注意,它不仅留下“一个整数”,它还给你留下一个 32 位整数,这是一个非常重要的细节,因为标准的 JS 数字可以对高达 53 位的整数进行建模,这就是为什么你通常想要 Math.round,除非你的数学是你的瓶颈)