如何让math.random工作?

时间:2015-06-03 19:13:12

标签: javascript html html5 math

我用math.random编写了这个代码,使得一个1到3之间的随机数,但是当我按下我的按钮时,它只给出+3,它在1到3之间不是随机的。

当我点击按钮时,我希望它在1到3之间。

Live demo

var cookies = 0; 
var rand = Math.floor(Math.random() * (3 - 1 + 1)) + 1; 
if(localStorage.cookies)
  cookies = localStorage.getItem('cookies');    
document.getElementById("cookies").innerHTML = cookies; 
function cookieClick(number) {
  cookies = parseInt(cookies) + rand;
  document.getElementById("cookies").innerHTML = cookies;
  localStorage.setItem('cookies', cookies); 
}

4 个答案:

答案 0 :(得分:0)

每次单击按钮时生成随机数,而不是在脚本顶部。另外,为什么你从3中减去1然后再添加它?:

function cookieClick(number){
  var rand = Math.floor(Math.random() * 3) + 1;
  cookies = parseInt(cookies) + rand;
  document.getElementById("cookies").innerHTML = cookies;
  localStorage.setItem('cookies', cookies);
}

答案 1 :(得分:0)

您可以在变量rand上使用%。

例如:

var val = rand % 3;
if(val == 0){
   val = 1;
}

-OR

var rand = Math.floor((Math.random() * 3) + 1);

答案 2 :(得分:0)

问题在于,每次按下p, span { border: 1px dotted blue; } p:after, span:after { content: '\a0'; }时,您都要设置一次随机数,而不是生成新的随机数。您需要在每次按下按钮时生成一个新的随机数。看到这个小提琴:http://jsfiddle.net/0k3c0x2x/15/

答案 3 :(得分:0)

您的代码正常运行,您只生成一次随机数。如果您要删除缓存并重新加载页面,则会生成不同的数字。例如,我的页面上有+2。

您需要在按钮点击内生成一个新的随机数。

function cookieClick(number){
cookies = parseInt(cookies) + Math.floor(Math.random() * (3 - 1 + 1)) + 1;
document.getElementById("cookies").innerHTML = cookies;
localStorage.setItem('cookies', cookies);}