Javascript随机数选择器无法正常工作

时间:2010-12-22 09:02:31

标签: javascript

我正在尝试创建一个简单的javascript应用程序来选择1和我在输入字段中指定的数字之间的随机数,因此我可以选择一个随机的赢家参加圣诞节比赛。

以下是我到目前为止的代码。我不认为它可以遥远,你可以帮助我,因为它没有更新输入字段来显示随机数:

<script type="text/javascript" language="javascript">
  function randomWinner() {
    var topNumber = topNumber.value;    
    var randomnumber=Math.floor(Math.random() + topNumber);
    winningNumber.value=randomnumber;
    return true;
  }
</script>

<form name="selectWinner">
Pick random number between 1 and <input name="topNumber" value="100"><br /><br />
The winning number: <input name="winningNumber" readonly="true"><br /><br />
<input type="button" value="Pick Winner" OnClick="randomWinner();">
</form>

6 个答案:

答案 0 :(得分:3)

您需要将 topNumber 与0和1之间的随机数相乘:

var randomnumber=Math.floor(Math.random() * topNumber);

获取特定范围的随机整数:

function getRandomInt(min, max) {
    return Math.floor(Math.random() * (max - min + 1)) + min;
}

答案 1 :(得分:1)

您正在为随机数添加一个字符串值,例如0.98764912837465 + "100"为您提供字符串"0.98764912837465100"floor函数设法将其转换回字符串,但它仍然不会大到足以成为零以外的任何东西。

你需要相乘。这会给你一个0到topnumber-1范围内的数字,所以你必须加1来得到它在1到topN的范围内:

var randomnumber=Math.floor(Math.random() * topNumber) + 1;

答案 2 :(得分:0)

您必须乘以topNumber,但必须增加topNumber + 1,以包含范围,因此topNumber = 101的最大randomNumber为100。

var randomNumber = Math.floor(Math.random() * topNumber)

答案 3 :(得分:0)

Math.random()生成0到1之间的数字。这是您需要的:

var randomnumber=Math.floor(Math.random()*topNumber)+1;

Math.random()将生成范围[0..1]中的值。 [0..1]乘以topNumber将导致[0..topNumber]范围。但是,Math.floor()会将其限制为[0..(topNumber-1)]。现在我们添加1并获得[1..topNumber]

答案 4 :(得分:0)

            var randomnumber=Math.floor(Math.random()*n)

这将给你一个0到n之间的随机数..

答案 5 :(得分:0)

您只能使用其名称来访问输入字段。尝试添加ID并使用getElementById

<input name="topNumber" id="topNumber" value="100">
<input name="winningNumber" id="winningNumber" readonly="true">

JavaScript的:

function randomWinner() {
    var topNumberInput = document.getElementById('topNumber');
    var topNumber = parseInt(topNumberInput.value, 10);
    var randomnumber= 1 + Math.floor(Math.random() * topNumber);
    var winningNumber = document.getElementById('winningNumber');
    winningNumber.value=randomnumber;
    return true;
}

此外,我已使用parseInt确保使用正确的数字。

工作示例:http://jsbin.com/uwude4