带有嵌套 If 语句的 Javascript 随机数



我有一些Javascript,它选择1到10之间的随机数,然后根据选择的随机数是否大于5将两个图像中的一个加载到img.src =中。

这是我的代码:

if ((Math.random() * 10) + 1 > 5) {
    img.src = '1.jpg';
} else {
    img.src = '2.jpg';
}

这非常适合 2 张图像,但是我现在希望它从 4 张图像中进行选择。

尝试使用上面的代码做一个嵌套的if语句,但我意识到我正在运行Math.random的多个实例,这违背了目的。

因此,我尝试在开始时使用 Math.random 定义一个变量,然后编写一个嵌套的 If 语句,如下所示:

var picnumber = Math.floor((Math.random() * 4) + 1);
if (picnumber = 1){
  img.src = '1.jpg';
} else {
  if (picnumber = 2){
    img.src = '2.jpg';
  } 
  else {
  if (picnumber = 3){
    img.src = '3.jpg';
  }
  else {
    img.src = '4.jpg';
  }
}}

我已经运行了 20 多次此代码,它不断加载相同的图像、图像“1.jpg”。我想我在这里做了一些非常基本的错误,我如何确保var picnumber将被分配一个随机数(1、2、3 或 4),并将正确的图像附加到img.src?(我希望每张图片都有 25% 的机会被选中)。
提前感谢您的时间!

您使用的是分配运算符(=)而不是比较运算符(==)。此外,您可以使用 elseif,这样你就不需要在 else 语句中放置一个新的 if:

var picnumber = Math.floor((Math.random() * 4) + 1);
if (picnumber == 1){
  img.src = '1.jpg';
} else if (picnumber == 2) {
    img.src = '2.jpg';
} else if (picnumber == 3) {
    img.src = '3.jpg';
} else {
    img.src = '4.jpg';
}

我建议将图片放在一个数组中。

然后,您可以像这样随机抓取图片:

var pics= ['1.jpg', '2.jpg', '3.jpg', '4.jpg'],
    picnumber = Math.floor((Math.random() * pics.length));
img.src= pics[picnumber];

试试这个:

var picnumber = Math.floor((Math.random() * 4) + 1);
if (picnumber == 1) {
  img.src = '1.jpg';
} else {
  if (picnumber == 2) {
    img.src = '2.jpg';
  } else {
    if (picnumber == 3) {
      img.src = '3.jpg';
    } else {
      img.src = '4.jpg';
    }
  }
}

最新更新