Satch3000
Satch3000

Reputation: 49422

JQuery create a random 16 digit number possible?

As the title says ... is it possible to create a random 16 digit number with jquery?

Upvotes: 2

Views: 14054

Answers (8)

Behrad Kazemi
Behrad Kazemi

Reputation: 402

I think this way is more beautiful:

const generateFixedLengthNumberInString = length =>
  [...Array(length).keys()].reduce(
    previousValue =>
      previousValue + String(Math.floor(Math.random() * 10) % 10),
  );
console.log(generateFixedLengthNumberInString(16))
// prints "0587139224228340"

Upvotes: 0

cfech
cfech

Reputation: 16

I know this question is old but this simple function will guarantee a 16 (or however many you want) character string every time without the 10% failure rate of other solutions. Can change it to a number if you need to.

function generate() {
        let string = ""
    
        while (string.length < 16) {
            let number = Math.floor(Math.random() * 10).toString()
            string += number
        }
        return string
    }

Upvotes: 0

rjmunro
rjmunro

Reputation: 28076

Not with jQuery, no, but you can do it with plain javascript.

If you want exactly 16 digits (possibly including leading 0s), I would start with Math.random(), convert to a string, pick 8 digits, and concatenate 2 runs together.

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

Upvotes: 9

ddhp
ddhp

Reputation: 88

I just tried with @rjmunro 's answer.
Unfortunately, it does generate string less than 16digits,
but very rare, approxly once in 10 million times.

Here is my testing code, runs in 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');
  }
}

Also @Dimitri Mikadze 's answer generate less length string as well, so I eventually adopt a way with some concept of his solution:

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

Upvotes: 1

Dimi Mikadze
Dimi Mikadze

Reputation: 474

u can use this function to generate random digits, just pass minimum and maximum parameters

function randomInt(min, max) {

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

random 16 digit, usage

randomInt(0, 9999999999999999);

Upvotes: 0

Chad
Chad

Reputation: 19619

Just use:

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

EDIT :

Note that there is about a 1/10 chance of a lower number of digits. If Math.random() generates something like 0.0942104924071337 then 0.0942104924071337 * 1E16 is 0942104924071337 which evaluates to 942104924071337; a 15 digit number.

The only way to 100% guarantee that the number is 16 digits in length is to have it be formed as a string. Using this method I would recommend @rjmunro's answer:

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

Upvotes: 15

JaredPar
JaredPar

Reputation: 755269

This is a task which is much better suited for raw javascript. For example

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

Upvotes: 1

Diodeus - James MacFarlane
Diodeus - James MacFarlane

Reputation: 114417

No, use JAVASCRIPT!

jQuery is not some magic genie.

Upvotes: 4

Related Questions