gpt4 book ai didi

javascript - 使用 math.random() 避免相同的值再次出现

转载 作者:行者123 更新时间:2023-11-30 11:50:49 24 4
gpt4 key购买 nike

animations = ['fadeIn','fadeInDown','slideInUp','flipInY','bounceInLeft'];

想象一下,每当用户单击某项时我都会生成随机效果,因此为了获得最佳体验,我希望用户具有相同的效果。但是有了

animations[ Math.floor(Math.random() * animations.length) -1];

那会发生。

如何避免相同的值再次出现?

最佳答案

我可以建议两种方式。

  1. 首先打乱数组,从索引 0 到 5 一个一个地移动,然后根据需要循环。
  2. 选择一个随机元素并将其切分直到数组为空,然后从备份中刷新数组。 (小心不要用引用备份,否则你的备份数组会随着拼接的数组一起被删除。所以使用 .slice())

Array.prototype.shuffle = function(){
var a = this.slice(), // don't morph the original
i = a.length,
j;
while (i > 1) {
j = ~~(Math.random()*i--);
a[i] = [a[j],a[j]=a[i]][0];
}
return a;
};

var album = ["photo1","photo2","photo3","photo4","photo5"];
photos = album.shuffle();
photos.forEach(p => console.log(p));

console.log("another way") // the splice way

photos = album.slice();
while (photos.length) console.log(photos.splice(Math.floor(Math.random() * photos.length),1)[0]);
!photos.length && (photos = album.slice()); // restore photos album and continue
while (photos.length) console.log(photos.splice(Math.floor(Math.random() * photos.length),1)[0]);
!photos.length && (photos = album.slice()); // restore photos album and continue

关于javascript - 使用 math.random() 避免相同的值再次出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39557840/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com