Javascript JQuery是否可以创建一个随机的16位数字?

Javascript JQuery是否可以创建一个随机的16位数字?,javascript,jquery,Javascript,Jquery,正如标题所说。。。可以用jquery创建一个随机的16位数字吗?不,使用JAVASCRIPT jQuery不是什么神奇的精灵。不是用jQuery,不是,但你可以用普通javascript来实现 如果您想要正好16位数字(可能包括前导0),我将从Math.random()开始,转换为字符串,选择8位数字,然后将两个运行连接在一起 number = (Math.random() + '').substring(2,10) + (Math.random() + '').substring(2,10

正如标题所说。。。可以用jquery创建一个随机的16位数字吗?

不,使用JAVASCRIPT


jQuery不是什么神奇的精灵。

不是用jQuery,不是,但你可以用普通javascript来实现

如果您想要正好16位数字(可能包括前导0),我将从
Math.random()
开始,转换为字符串,选择8位数字,然后将两个运行连接在一起

number = (Math.random() + '').substring(2,10)
  + (Math.random() + '').substring(2,10);

这是一项更适合原始javascript的任务。比如说

var str = '';
var i;
for (i = 0; i < 16; i++) {
  var number = Math.floor(Math.random() * 10) % 10;
  str += number;
}
var-str='';
var i;
对于(i=0;i<16;i++){
变量编号=数学地板(数学随机()*10)%10;
str+=数字;
}
只需使用:

Math.floor(Math.random()*1E16)
编辑:

请注意,大约有1/10的几率出现数字较低的情况。如果
Math.random()
生成类似
0.0942104924071337
的内容,则
0.0942104924071337*1E16
0942104924071337
,其计算结果为
942104924071337
;15位数字

要100%保证数字长度为16位,唯一的方法是将其形成字符串。使用这种方法,我推荐@rjmunro的答案:

number = (Math.random()+' ').substring(2,10)+(Math.random()+' ').substring(2,10);

我刚刚尝试了@rjmunro的答案。
不幸的是,它生成的字符串少于16位,
但非常罕见,大约是千万次中的一次

以下是我在nodejs中运行的测试代码:

'use strict';
var fs = require('fs');
var totalTimes = 100000000;
var times = totalTimes;
var fileName;
var writeStream;

while (times > 0) {
  var key = (Math.random() + ' ').substring(2,10) + (Math.random() + ' ').substring(2,10);
  times --;
  if (key.length !== 16) {
    var msg = 'a flaw key gened: ' + key + '\n';
    // create a log file at first time
    if (!fileName) {
      fileName = 'log/flaw_key_' + new Date() + '.txt';
    }
    writeStream = fs.createWriteStream(fileName);
    writeStream.write(msg);
    writeStream.end();
  }
  if (times === 0) {
    console.log(totalTimes + ' times key gened');
  }
}
另外@Dimitri Mikadze的答案生成的字符串长度也较短,因此我最终采用了一种方法来理解他的解决方案:

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

/**
 * Gen random digits string in specific length
 * @param {Int} length of string
 *
 * @return {String}
 *
 */
function genString(length) {
  var times = length;
  var key = '';
  while (times > 0) {
    times --;
    key += getRandomInt(0, 9);
  }
  return key;
}

genString(16); // a 16 digits string

您可以使用此函数生成随机数字,只需传递最小和最大参数

function randomInt(min, max) {

    return Math.floor(Math.random() * (max - min + 1) + min);
}
随机16位,用法

randomInt(0, 9999999999999999);

Math.round(Math.random()*1E16)
jquery没有任何实用程序来实现这一点,您只需使用普通javascript即可。您好@Stach3000,我只需要告诉您,当前接受的答案不是无错误的,即使采取一些极端措施,它仍然可能失败(刷新几次)这正好是:jQuery可以实现两个愿望,使它比精灵少了一个愿望。+1这已经重复了很多次,但似乎需要重复更多。请,有人给我解释一下
1E16
:)这是科学符号的缩写形式。所以
1E16==1*(10^16)
。你可以看到更多信息,我相信你不是有意使用
Math.floor
,因为这将从
0-15
@ajax333221生成数字
Math.floor()
只是用来截断用
Math.random()*1E16
创建16位尾数后剩下的小数点。这不会从
0-15
生成一个数字,我知道了,我的错误是将
1E16
替换为
16
(这显然是不正确的)。很抱歉浪费您的时间。这不仅仅是“更适合原始javascript”,它与jQuery没有任何关系。这就像说“我怎样才能只用桔子做苹果派?”请提出你自己的问题。我采用另一种方式。让我编辑我的答案并提供我的解决方案。