正如标题所说......是否可以使用jquery创建一个随机的16位数字?
答案 0 :(得分:11)
只需使用:
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);
答案 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);