Javascript 如何生成不重复的随机结果?

Javascript 如何生成不重复的随机结果?,javascript,math,random,Javascript,Math,Random,我对JavaScript一无所知。从下面的代码中,什么是确保单击时背景色不会重复的正确方法 添加:我需要下一个颜色不是上一个颜色,因为如果是这样的话,你无法知道当点击页面时是否正常工作。如果整个数组随机重复,只要相同的颜色没有重复两次就可以了,例如红色,然后是红色 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title&

我对JavaScript一无所知。从下面的代码中,什么是确保单击时背景色不会重复的正确方法

添加:我需要下一个颜色不是上一个颜色,因为如果是这样的话,你无法知道当点击页面时是否正常工作。如果整个数组随机重复,只要相同的颜色没有重复两次就可以了,例如红色,然后是红色

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>01</title>
        <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous">
    </head>
    <body>
        <div class="container">
            <div class="row vh-100 d-flex align-items-center">
                <div class="col text-center">
                    <button>Click Me!</button>
                </div>
            </div>
        </div>
    </div>
    <script>
    const button = document.querySelector('button')
    const body = document.querySelector('body')
    const colors = ['red', 'green', 'blue', 'yellow', 'pink', 'purple']

    body.style.backgroundColor = 'violet'
    button.addEventListener('click', changeBackground)

    function changeBackground(){
        const colorIndex = parseInt(Math.random()*colors.length)
        body.style.backgroundColor = colors[colorIndex]
    }
    </script>
</body>
</html>

01
点击我!
const button=document.querySelector('按钮')
const body=document.querySelector('body')
常量颜色=[“红色”、“绿色”、“蓝色”、“黄色”、“粉色”、“紫色”]
body.style.backgroundColor='violet'
按钮。addEventListener('单击',更改背景)
函数changeBackground(){
const colorIndex=parseInt(Math.random()*colors.length)
body.style.backgroundColor=颜色[颜色索引]
}

颜色代码有三种表示方式:

  • 颜色名称

  • HEX颜色代码

  • RGB颜色代码

    十六进制颜色代码-由哈希代码(#)和十六进制数字组成。 例如:
    RED
    具有十六进制颜色代码=
    #FF0000

我们可以使用Math.random()函数
生成随机十六进制颜色代码

下面是工作代码片段

function GenerateRandomColor() {
  return '#' + Math.floor(Math.random()*16777215).toString(16);
}

请注意,Math.random()函数返回一个浮点数,
刻度为16(小数点后的一位),如果我们将其乘以上面的某个大数字,则获得重复值的可能性非常小。

颜色代码有三种表示方式:

  • 颜色名称

  • HEX颜色代码

  • RGB颜色代码

    十六进制颜色代码-由哈希代码(#)和十六进制数字组成。 例如:
    RED
    具有十六进制颜色代码=
    #FF0000

我们可以使用Math.random()函数
生成随机十六进制颜色代码

下面是工作代码片段

function GenerateRandomColor() {
  return '#' + Math.floor(Math.random()*16777215).toString(16);
}


请注意,Math.random()函数返回一个浮点数,
小数位数为16(小数点后一位),如果我们将其乘以上面的某个大数字,则获得重复值的可能性非常小。

1。洗牌数组2。按顺序从中取出项目。这是随机的,不重复。我需要理解。。。你一共有6种颜色。。。所以,如果用户点击6次,然后没有其他独特的颜色可用。。最终它会被重复…?嗨,我会编辑这个问题,我只需要下一个颜色不是上一个颜色,因为如果是这样的话,你就无法知道点击页面时页面是否正常工作。只要同一种颜色不重复两次,他们就可以自己重复。编辑:例如,在红色之后,不能仅仅为了表明页面工作正常而再次变为红色。介意提供一个示例代码吗?对不起,我是一个完全的新手。如果你使用,你可以做
colors=randoSequence(colors);var nextColor=colors.pop().value1。洗牌数组2。按顺序从中取出项目。这是随机的,不重复。我需要理解。。。你一共有6种颜色。。。所以,如果用户点击6次,然后没有其他独特的颜色可用。。最终它会被重复…?嗨,我会编辑这个问题,我只需要下一个颜色不是上一个颜色,因为如果是这样的话,你就无法知道点击页面时页面是否正常工作。只要同一种颜色不重复两次,他们就可以自己重复。编辑:例如,在红色之后,不能仅仅为了表明页面工作正常而再次变为红色。介意提供一个示例代码吗?对不起,我是一个完全的新手。如果你使用,你可以做
colors=randoSequence(colors);var nextColor=colors.pop().value您不能保证它们不会重复,或者它们之间的距离不够近,不能保证本质上是重复的。此外,它们可能会与其他颜色冲突。如果我们谈论概率,那么在上述情况下,概率大约为1/16000000,这是一个非常小的数字。“是的,你是对的。@RishuRanjan:既然我们在这里讨论的是数学,我想提醒你,OP的主要关注点不是获得视觉上相同的顺序颜色,因此获得两种视觉上不可区分的颜色的实际几率(即使有不同的十六进制代码)我喜欢这个答案,因为它是最简单的(我是一个完全的新手),但它不能保证颜色在视觉上是可分辨的。对不起,作为回报“#”是什么意思?无法用谷歌找到答案。颜色代码表示为3种方式:颜色名称|十六进制颜色代码| RGB颜色代码。十六进制颜色代码-由hascode(#)和十六进制数字组成。例如:红色有十六进制颜色代码=#FF0000。你不能保证它们不会重复,或者它们不会靠得太近以至于根本不会重复。此外,它们可能会与其他颜色冲突。如果我们谈论概率,那么在上述情况下,概率大约为1/16000000,这是一个非常小的数字。“是的,你是对的。@RishuRanjan:既然我们在这里讨论的是数学,我想提醒你,OP的主要关注点不是获得视觉上相同的顺序颜色,因此获得两种视觉上不可区分的颜色的实际几率(即使有不同的十六进制代码)我喜欢这个答案,因为它是最简单的(我是一个完全的新手),但它不能保证颜色在视觉上是可分辨的。对不起,作为回报“#”是什么意思?无法用谷歌找到答案。颜色代码表示为3种方式:颜色名称|十六进制颜色代码| RGB颜色代码。十六进制颜色代码-包括