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