随机编号以自定义时间播种

时间:2013-09-09 11:02:44

标签: javascript random

我正在尝试使用javascript

创建如下的随机数
function valid(form) {
  var input = 0;
  var input = document.getElementById('custom1').value;
  var final_input = input.charAt(0);
  var number = 1000000000 - Math.floor(Math.random() * 1000000000);
  final_input = final_input + number;
  document.getElementById('custom4').value = final_input;
}

这个想法是它将从“custom1”(它是输入字段之一)中获取值,然后将获得第一个字符。之后,它将添加下9个随机数字,并将最终值放入表单的custom4(另一个输入字段)。到目前为止javascript工作正常。但是,我宁愿将随机数字编号用当前时间播种。我认为这将是非常随意的。这可能吗?

3 个答案:

答案 0 :(得分:2)

JavaScript standard random API不支持显式播种(这是一种耻辱)。这是the spec

  

返回带有正号的Number值,大于或等于0   但小于1,随机选择或伪随机选择近似   在该范围内均匀分布,使用   依赖于实现的算法或策略。这个功能不需要   参数。

如果您确实需要使用给定数字为您的生成器播种,则必须使用this one之类的库(未经我测试)。

但JavaScript随机API是隐式播种,可确保您获得不同的结果。关于如何播种没有ECMAScript规范,但所有浏览器都可能使用播种时间。 MDN说

  

随机数生成器从当前时间播种,如   Java的。

答案 1 :(得分:1)

我必须纠正自己。这只适用于Mozilla(据我所知):JavaScript随机API已将当前时间用作种子。不需要加倍(并且不支持)。

规范未提及算法或策略如何生成随机数以及是否以及如何播种。

答案 2 :(得分:0)

谢谢.. 最后我有类似下面的内容

function valid(form) {
  var input = 0;
  var input = document.getElementById('custom1').value;
  var final_input = input.charAt(0);
  var number = new Date().valueOf(); /*1000000000 - Math.floor(Math.random() * 1000000000);*/
  final_input = final_input + number;
  document.getElementById('custom4').value = final_input;
}