我正在尝试使用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工作正常。但是,我宁愿将随机数字编号用当前时间播种。我认为这将是非常随意的。这可能吗?
答案 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;
}