gpt4 book ai didi

javascript - 两个限制之间的javascript中的随机非重复数字生成

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:34:39 24 4
gpt4 key购买 nike

除了数组拼接之外,是否有任何方法可以用来在两个数字之间生成一个随机数而无需重复,直到生成这两个数字之间的所有数字?洗牌技术或除拼接之外的任何其他阵列方法都将非常有用。

最佳答案

首先我们使用 fisherYates 实现 (credit goes to @ChristopheD)并扩展数组原型(prototype)以提供随机播放功能

function arrayShuffle () {
var i = this.length, j, temp;
if ( i === 0 ) return false;
while ( --i ) {
j = Math.floor( Math.random() * ( i + 1 ) );
temp = this[i];
this[i] = this[j];
this[j] = temp;
}
}

Array.prototype.shuffle =arrayShuffle;

var numbers = new Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
numbers.shuffle();

现在使用 pop 方法,我们从种子中获取一个数字,直到它为空

numbers.pop(); //returns a number

为了确保我们有一个由 startend 范围内的数字填充的数组,我们使用一个简单的循环来创建我们的种子。

var start = 1;
var end = 5;
var numbers = new Array();
for (var i = start; i <= end; i++) {
numbers.push(i);
}

这是关于 jsfiddle 的样本

更新:使用 fisherYates 算法以提高洗牌效率

关于javascript - 两个限制之间的javascript中的随机非重复数字生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16728297/

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