Javascript JQuery是否可以创建一个随机的16位数字?
正如标题所说。。。可以用jquery创建一个随机的16位数字吗?不,使用JAVASCRIPTJavascript 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不是什么神奇的精灵。不是用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没有任何关系。这就像说“我怎样才能只用桔子做苹果派?”请提出你自己的问题。我采用另一种方式。让我编辑我的答案并提供我的解决方案。