JQuery可以创建一个随机的16位数字吗?

时间:2012-02-02 22:23:13

标签: javascript jquery

正如标题所说......是否可以使用jquery创建一个随机的16位数字?

6 个答案:

答案 0 :(得分:11)

只需使用:

Math.floor(Math.random()*1E16)

编辑:

请注意,大约有1/10的几率数字。如果Math.random()生成类似0.0942104924071337的内容,则0.0942104924071337 * 1E160942104924071337,其评估为942104924071337;一个15位数字。

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

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

答案 1 :(得分:7)

不是jQuery,不是,但你可以使用普通的javascript。

如果你想要16位数字(可能包括前导0),我会从Math.random()开始,转换为字符串,选择8位数,并连接2次运行。

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

答案 2 :(得分:5)

不,使用JAVASCRIPT!

jQuery不是一个神奇的精灵。

答案 3 :(得分:1)

这是一个更适合原始javascript的任务。例如

var str = '';
var i;
for (i = 0; i < 16; i++) {
  var number = Math.floor(Math.random() * 10) % 10;
  str += number;
}

答案 4 :(得分:0)

我刚试过@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

答案 5 :(得分:0)

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

function randomInt(min, max) {

    return Math.floor(Math.random() * (max - min + 1) + min);
}

随机16位,用法

randomInt(0, 9999999999999999);
相关问题