【问题标题】:How to generate random number each time如何每次生成随机数
【发布时间】:2015-05-12 14:51:24
【问题描述】:

有谁知道我如何生成一个新的随机数,以便我可以将它们存储到不同的变量中? (进入 temp1 和 temp2)我希望程序每次为每个新变量重新运行“randomnumber”函数,这样我就可以将新的随机值存储到它们中。

<HTML>
<!Foundation Page for building our Javascript programs>
<HEAD>
<TITLE>The Foundation Page </TITLE>
<SCRIPT LANGUAGE = "JavaScript">
function main()
{
	totalscore()
	leaderboard()
}


function randomnumber()
{
	var randomnumber;
	randomnumber = Math.random()*3;
	return(Math.floor(randomnumber+0.2));
}
function totalscore() 
{
	var n;
	var p;
	var total;
	var temp1; 
	var temp2;
	var score; 

	
	score = 0;
	total=0
	
	for (n=0; n<10; n=n+1)
	{
		number = randomnumber();
		if (number == 0)
			{
				score =score+0;
			}
		else if (number == 2)
			{
				score =score+2;
			}
		else if (number == 3)
			{
				score =score+3;
			}
	total=total+score;
	}
temp1= total
temp2= total 
document.write(total)
document.write(total)

	
}

</SCRIPT>
<HEAD>
<BODY>
<BODY BGCOLOUR = "WHITE">
<H2>The Foundation Page </H2>
<HR>
<SCRIPT LANGUAGE = "Javascript"> main() </SCRIPT>
<INPUT NAME = "dobutton" TYPE = "button" value = "Start game" on Click = "game()"> 
<INPUT NAME = "dobutton" TYPE = "button" value = "Leaderboard" on Click = "leader()">
</BODY>
</HTML>

【问题讨论】:

  • 我不明白你的问题,你为什么不能多次调用 randomnumber 函数?(你想存储随机数的每个变量一次)
  • 抱歉解释不好,我想生成新的随机值并将它们存储到 temp1 和 temp2 中。但是,随机数生成器正在打印 2 个相同的数值(例如 32、32)
  • 将score = 0; ... for(...)... 放入一个内部函数中,并在每次赋值之前调用它。
  • 对不起,我很难理解你在说什么。
  • 那么脚本运行后,你想让temp1和temp2有不同的随机数吗?那你为什么说temp1= total; temp2= total;?

标签: javascript variables math random increment


【解决方案1】:

我想我知道你在问什么,我会在下面发布工作代码,并解释为什么你会得到相同的随机数。

  1. 您有一个 for 循环正在生成分数并返回一个您要存储到总计中的值。问题是您将该数字分配给 temp1 和 temp 2,因此它们现在是相同的数字,然后您将两个数字都写入页面。您需要做的是进行 2 次不同的计算。下面的代码将修复它,并为您提供 2 个不同的总数...

    function totalscore() 
    {
        var total1 = 0;
        var total2 = 0;
    
        for (var n=0; n<10; n++)
        {
            total1 = total1 + randomnumber();
            total2 = total2 + randomnumber();
        }
        document.write(total1);
        document.write(total2);
    
    }
    
  2. 现在我对您的代码有点困惑,因为每次在 for 循环中重新计算时,分数都会自行复合。 (即,如果前 5 个分数是 1、2、2、1、3,那么总分将是 24,而不是预期的 9。如果这是故意的,则改为放入此代码。

    function totalscore() 
    {
        var total1 = 0;
        var total2 = 0;
        var score1 = 0; 
        var score2 = 0; 
    
        for (var n=0; n<10; n++)
        {
            score1 = score1 + randomnumber();
            total1 = total1 + score1;
            score2 = score2 + randomnumber();
            total2 = total2 + score2;
        }
    
        document.write(total1);
        document.write(total2);
    }
    

祝你的项目和学习编码好运!

【讨论】:

    【解决方案2】:

    我注意到的问题

    1. 大多数语句后面没有分号
    2. 您在随机数 + 0.2 上返回 Math.floor,这使得 + 0.2 什么都不做。
    3. 您在单击按钮时调用 onclick='game()',但没有 game(),但可能是我们看不到的代码。
    4. 您同时设置 temp1 和 temp2 = total,并在 total 上使用 document.write 两次

    现在,问题是如何生成随机数。尽管您可以简化它并使用Math.floor(Math.random()*3) 或return Math.floor(Math.random()*3),但您这样做是正确的。当然,您现在可以将 3 换成您想要的任何上限。

    【讨论】:

      猜你喜欢
      • 2017-09-11
      • 1970-01-01
      • 2019-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-07
      相关资源
      最近更新 更多