作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在从 Javascript 开始学习编程,我的老师让我们随机掷骰子,一个简单的 Math.ceil(6*Math.random())
我试图稍微游戏化它并判断结果。所以,如果你掷出 7,你就赢了,任何其他的掷骰你都输了。最终的结果是,
“你掷出了:7你赢了!”
但是,我尝试通过大约说来实现:
console.log("You rolled a: " + diceSum);
if (dicesum() == 7) {
console.log("You win!");
} else {
console.log("Aw... you lose. Better luck next time");
}
diceSum() 函数每次都会进行计算,因此我可能会得到“你掷出了 a: 7”和“噢...你输了”,因为第一次掷出的是 7,但是当 if 语句出现时, diceSum 是不同的东西。
如何生成一个像掷骰子一样的随机数,然后一遍又一遍地重复使用它的值?
这是我当前的代码(远远超出了必要的范围,因为我正在尝试显示这些值,以便我知道它是否返回正确的答案):
//Functions
//Generate a random single roll of a dice
var getDieRoll = function() {
return Math.ceil(6*Math.random());
};
//Sum up two dice rolls
var diceSum = function() {
var firstDie = getDieRoll();
var secondDie = getDieRoll();
return firstDie+secondDie;
};
//
//Variables
//Check to see if total sum of the roll is 7
var winMsg = "Winner!"
var loseMsg = "Aw... you lose. Better luck next time."
//
//Outputs
//show total sum to compare with message below
console.log(diceSum())
//Return a message stating the result
console.log("You rolled a " + diceSum())
//View true false status to compare with message returned below
console.log(diceSum()==7)
//If diceSum is a 7, give winning message, otherwise give losing message
if (diceSum()==7){
console.log(winMsg);
} else {
console.log(loseMsg);
}
最佳答案
将结果放入变量中,然后使用该变量:
var sum = diceSum();
//Outputs
//show total sum to compare with message below
console.log(sum);
//Return a message stating the result
console.log("You rolled a " + sum)
//View true false status to compare with message returned below
console.log(sum == 7);
//If diceSum is a 7, give winning message, otherwise give losing message
if (sum == 7){
console.log(winMsg);
} else {
console.log(loseMsg);
}
<小时/>
顺便说一句,计算随机数的方式是错误的。 random
method被定义为返回一个 0 <= n < 1 的值,即它可以为零,但永远不能为一。
如果使用Math.ceil
,效果是结果偶尔会为零,并且获得 6 的机会比其他数字略小。
使用Math.floor
代替:
function getDieRoll() {
return Math.floor(6 * Math.random()) + 1;
};
关于javascript - 如何只生成一次随机数,并重用其输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24960345/
我是一名优秀的程序员,十分优秀!