Javascript程序帮助

Javascript程序帮助,javascript,Javascript,更新此程序应记录每侧滚动的次数,而不是每侧滚动本身 我正在做一个javascript练习,需要拿两个骰子,掷1000次,并跟踪每次掷骰。我认为最好的方法是使用数组,但我不确定我所做的是否正确。我只是需要一点帮助,为我指明正确的方向,让它工作,因为现在它没有输出任何东西。谢谢这是我的代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1

更新此程序应记录每侧滚动的次数,而不是每侧滚动本身

我正在做一个javascript练习,需要拿两个骰子,掷1000次,并跟踪每次掷骰。我认为最好的方法是使用数组,但我不确定我所做的是否正确。我只是需要一点帮助,为我指明正确的方向,让它工作,因为现在它没有输出任何东西。谢谢这是我的代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Exercise Five</title>

<script type="text/javascript">
    function Die(){
        this.roll = function(){
            this.sides = 0;
            return parseInt((Math.random( ) * 1000) % this.sides) + 1;  
        }
    }
</script>

</head>

<body>
<script type="text/javascript">
    var dieOne = new Die();
    var dieTwo = new Die();
    var rollOne = 0;
    var rollTwo = 0;
    var roll_value = new Array();
    var arrayPlace = 0;

    for(var i = 0; i < 1000 ; i++){
        rollOne = dieOne.roll();
        dieOne.sides = 10;
        rollTwo = dieTwo.roll();
        dieTwo.sides = 10;
        arrayPlace = (rollOne + rollTwo) - 2;
        roll_value[arrayPlace]++;
    }

    for( var i = 0; i < roll_value.length; i++){
        document.writeln(roll_value[i]);
    }

</script>
</body>
</html>

练习五
函数Die(){
this.roll=函数(){
此值为0;
返回parseInt((Math.random()*1000)%this.sides)+1;
}
}
var dieOne=新模具();
var dieTwo=新模具();
var rollOne=0;
var-rollTwo=0;
var roll_value=新数组();
var arrayPlace=0;
对于(变量i=0;i<1000;i++){
rollOne=双烯。roll();
双单侧=10;
rollTwo=dieTwo.roll();
两侧=10;
arrayPlace=(rollOne+rollTwo)-2;
roll_值[arrayPlace]++;
}
对于(变量i=0;i
对不起,请参阅下面更新的代码:

var dieOne = new Die();
var dieTwo = new Die();
var rollOne = 0;
var rollTwo = 0;
var roll_values = new Array();

for(var i = 0; i < 1000 ; i++){
  rollOne = dieOne.roll();
  rollTwo = dieTwo.roll();
  roll_values[i] = { 'first': rollOne,
                     'second': rollTwo,
                     'value': 0 };
  // 1. iterate through past roll_values[i].first, roll_values[i].second
  // in order to determine what you need to increment and by how much

  // 2. finally set roll_values[i].value = var_containing_value;
}

for( var i = 0; i < roll_value.length; i++){
  console.log(roll_value[i]);
}
var dieOne=新模具();
var dieTwo=新模具();
var rollOne=0;
var-rollTwo=0;
var roll_values=新数组();
对于(变量i=0;i<1000;i++){
rollOne=双烯。roll();
rollTwo=dieTwo.roll();
roll_值[i]={“第一”:rollOne,
"第二":第二,,
“值”:0};
//1.遍历过去的滚动值[i]。首先,滚动值[i]。其次
//为了确定需要增加什么以及增加多少
//2.最终设置roll_值[i]。值=包含_值的var_;
}
对于(变量i=0;i
另外,对于调试,
console.log(无论什么)
非常优秀,在大多数现代浏览器上都受支持(IE>8,谢谢Kolink)。控制台日志将显示在javascript/错误控制台中

有两个问题:如何存储滚动值以及如何递增数组。这两个问题现在都应该得到解决。

尝试以下方法:

  function Dice(sides) {
    this.sides = sides;
  }

  Dice.prototype.roll = function() {
    return (Math.random() * (this.sides + 1)) | 0 ;
  }

  var counts = [];
  var d1 = new Dice(6);
  var d2 = new Dice(6);
  var s;

  for (var i=1000; i; i--) {
    s = d1.roll() + d2.roll();
    counts[s] = typeof counts[s] == 'undefined'? 1 : ++counts[s];
  }

  // Show results
  for (var i=0, iLen=counts.length; i<iLen; i++) {
    console.log(i + ' : ' + counts[i]);
  }
功能骰子(侧面){
这个边=边;
}
Dice.prototype.roll=函数(){
返回(Math.random()*(this.sides+1))| 0;
}
var计数=[];
变量d1=新骰子(6);
var d2=新骰子(6);
var s;
对于(变量i=1000;i;i--){
s=d1.roll()+d2.roll();
计数[s]=计数类型[s]=“未定义”?1:++计数[s];
}
//显示结果

对于(var i=0,iLen=counts.length;iSo,有什么问题?
dieOne.sides=10;
您可能希望在掷骰子之前这样做,而不是在掷骰子之后。并且无需每次在循环内部重置此项。很抱歉,它没有输出任何内容,我已在firefox上使用webdeveloper工具进行了检查,一切正常
var sides=0;返回parseInt((Math.random()*1000)%sides)+1;
看起来它每次都会被零除。@thilo我已经解决了这个问题。这是一个很好的观点。我已经再次测试了它,只是为了确保我的随机生成函数能够正常工作。我确实必须将var sides改回this.sides,但它确实有效。这部分实际上是在书中给我的。我没有详细说明,这个程序每次滚动值时都需要跟踪。因此,如果滚动2 5,则滚动量为10,并且需要记住10滚动了一次。然后,当再次滚动10时,它需要增加到2,依此类推。我提供了一些提示,这些提示应该对您有所帮助。通过为滚动值数组使用哈希对象,您可以跟踪多个值很容易,这应该允许您确定转鼓的适当值所需的所有历史记录。
console.log()
在IE8中受支持+