Javascript Math.random()和条件表达式
我想与您分享我对该代码的看法:Javascript Math.random()和条件表达式,javascript,if-statement,random,colors,nodes,Javascript,If Statement,Random,Colors,Nodes,我想与您分享我对该代码的看法: for (var i = 1, max = 5; i < max; i++) { let random = Math.random(); let expression = (random < 1 / (i + 1)); if (expression){ console.log('random is: ' + random + ' and the expression is: ' + expression + ',
for (var i = 1, max = 5; i < max; i++) {
let random = Math.random();
let expression = (random < 1 / (i + 1));
if (expression){
console.log('random is: ' + random + ' and the expression is: ' + expression + ', i is: ' + i);
}else{
console.log('random was: ' + random + ' and the expression was: ' + expression + ', i was: ' + i);
}
}
我首先认为它的计算结果是random<1,所以as random使用Math.random()来获得一个介于0和1之间的数字,不包括1;我以为这句话的一部分永远是真的 但事实上,在把它放到repl中之后,我发现1/(I+1)部分是先完成的,然后全部完成:随机/结果 我也读过: 请注意,在我简化代码的原始帖子中,原始代码是:
var randomIndexFromCollection = function randomIndexFromCollection(collection) {
var index = 0;
for (var i = 1, max = collection.length; i < max; i++) {
if (Math.random() < 1 / (i + 1)) {
index = i;
debugger;
}
}
return index;
};
var randomIndexFromCollection=函数randomIndexFromCollection(collection){
var指数=0;
对于(变量i=1,max=collection.length;i
语法:
let expression = (random < 1 / (i + 1));
检查如下:Math.random()是否小于1/(i+1),如果是,则返回true,否则返回false。它不可能是随机/结果,因为其中有一个相等运算符,用于比较两边。
let expression = (random < 1 / (i + 1));