Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Math.random()和条件表达式_Javascript_If Statement_Random_Colors_Nodes - Fatal编程技术网

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));