不正确的随机数-Javascript

不正确的随机数-Javascript,javascript,random,Javascript,Random,我试图从数组中随机获取用户名和密码,并检查当前用户名和密码是否与以前的用户名和密码相同。如果是相同的,我想从数组中获取不同的用户id。我写了下面的代码,但我发现它也使用相同的用户名和密码 让用户名=[“uname1”,“uname2”], 密码=[“pass1”,“pass1”]; 让兰德,普雷维兰德; prevRand=\ u0.random(0,usernames.length-1); rand=\ u0.random(0,usernames.length-1); console.log(“

我试图从数组中随机获取用户名和密码,并检查当前用户名和密码是否与以前的用户名和密码相同。如果是相同的,我想从数组中获取不同的用户id。我写了下面的代码,但我发现它也使用相同的用户名和密码

让用户名=[“uname1”,“uname2”],
密码=[“pass1”,“pass1”];
让兰德,普雷维兰德;
prevRand=\ u0.random(0,usernames.length-1);
rand=\ u0.random(0,usernames.length-1);
console.log(“兰德”+兰德)
console.log(“prevrand”+prevrand)
if(rand!==prevard){
log(“uname!==:”+用户名[rand])
log(“pass!==:”+密码[rand])
普雷维兰德=兰德;
}否则{
while(rand!==prevard){
rand=\ u0.random(0,usernames.length-1);
console.log(“newrand”+rand)
}
普雷维兰德=兰德;
log(“unamenew”+用户名[rand])
console.log(“passnew”+密码[rand])
}
请更正我的逻辑。谢谢。

您的
while(rand!==prevRand)
循环从未执行,因为它位于
else
语句中,这意味着
rand==prevRand
。尝试将
while
循环更改为
do..while

检查示例(我已将
随机
替换为
数学.random
以在没有外部库的情况下运行)

让用户名=[“uname1”、“uname2”、“uname3”、“uname4”],
密码=[“passw1”、“passw2”、“passw3”、“passw4”];
让兰德,普雷维兰德;
prevRand=Math.floor(Math.random()*(usernames.length));
rand=Math.floor(Math.random()*(usernames.length));
console.log(“兰德”+兰德)
console.log(“prevrand”+prevrand)
if(rand!==prevard){
log(“uname”+用户名[rand])
console.log(“pass”+密码[rand])
普雷维兰德=兰德;
}否则{
做{
rand=Math.floor(Math.random()*(usernames.length));
console.log(“newrand”+rand)
}while(rand==prevard);
普雷维兰德=兰德;
log(“unamenew”+用户名[rand])
console.log(“passnew”+密码[rand])

}
rand===prevard在else情况下为真,因此它在循环时永远不会进入

相反,循环必须在rand等于prevard时循环

  while (rand === prevRand) {
        rand = _.random(0, usernames.length - 1);
        console.log("newrand " + rand)
 }

每次它们相等时,都应该给它们一个新的值,使其不同。

请添加lodash或下划线标记,以指示您正在使用的库。
while(rand!==prevRand){
应该是
while(rand==prevRand){
。当循环结束时,您编写它的方式强制
rand
prevard
相同。因此,在您所说的更改之后,在if/else循环之后,如果我在另一个变量中使用rand的值来获取用户名,它将是正确的?@AforApple在循环之后
rand
将保留除
prevR之外的其他值和
,因此,
用户名[rand]
将不同于
用户名[prevard]
。以及密码。在进行了您所说的更改之后,在if/else循环之后,如果我使用rand的值在另一个变量中获取用户名,是否正确?