如何在javascript中生成一个随机数数组,其波动幅度为1?

如何在javascript中生成一个随机数数组,其波动幅度为1?,javascript,arrays,random,Javascript,Arrays,Random,我希望能够用javascript生成以下数组(或类似的数组): [ 52,//随机数0-100 53,//随机+1或-1 54,//随机+1或-1 53,//随机+1或-1 52,//随机+1或-1 53,//随机+1或-1 52,//随机+1或-1 51,//随机+1或-1 50,//随机+1或-1 51,//随机+1或-1 //等等等等等等。 ] 我该怎么做 我已经试过了,但我总是得到一个随机数,后面只有1和-1: Array(50).fill(0).map((v,i,a)=>i!==0?

我希望能够用javascript生成以下数组(或类似的数组):

[
52,//随机数0-100
53,//随机+1或-1
54,//随机+1或-1
53,//随机+1或-1
52,//随机+1或-1
53,//随机+1或-1
52,//随机+1或-1
51,//随机+1或-1
50,//随机+1或-1
51,//随机+1或-1
//等等等等等等。
]
我该怎么做

我已经试过了,但我总是得到一个随机数,后面只有1和-1:

Array(50).fill(0).map((v,i,a)=>i!==0?(Math.round(Math.random())?a[i-1]+1:a[i-1]-1):Math.floor(Math.random()*101))
简单解决方案:

函数随机数(最小值、最大值){
返回min+Math.floor((max+1-min)*Math.random())
}
函数生成(大小){
设last=rand(01100)
常量数组=[]
for(设i=0;i
这可能会有帮助:

函数随机生成器(大小){
让结果=[];
让firstValue=Math.round(Math.random()*100);
结果。推送(第一个值);
对于(设i=0;i 0.5?1:-1;
结果。推送(第一个值)
}
返回结果;
}
控制台日志(随机生成器(10));
console.log(randomGenerator(13));
arr=[Math.random()*100]
for(设i=0;i<49;i++){
arr.push(arr[i]+(Math.random()>0.5?1:-1))
}

这对您有用吗?

下面是使用递归函数的方法,您可以设置随机数的初始最小值和最大值,还可以指定最终数组长度:

const arr=[];
函数getRandomInt(最小值、最大值){
min=数学单元(min);
最大值=数学楼层(最大值);
返回Math.floor(Math.random()*(max-min+1)+min);
}
函数更新器(最小、最大、arrLength、arr){
if(arrLength){
设resultNum=getRandomInt(最小值,最大值);
if(resultNum!==arr[arr.length-1]){
arr.push(resultNum);
updateArr(resultNum-1,resultNum+1,arrLength-1,arr);
}else更新环(最小、最大、arrLength、arr);
}
}
更新耳环(0,100,10,arr);

console.log(arr);
这是前一个值的±1?还是初始随机生成的值的±1?问题不清楚。你到底想做什么?@ItoPizarro这是前一个值,但是
数组[0]
是随机的generated@odedbartov我正在尝试生成一个数组,从0-100的随机数开始,例如50,然后是50+1(51)或50-1(49)(随机选择)。对于下一个数组,如果选择了49,则后面是48(49-1)或50(49+1),随机选择。我发布了一个答案,请查看
arr = [Math.random()*100]
for (let i = 0; i < 49; i++){
arr.push(arr[i] + (Math.random() > 0.5? 1 : -1))
}