2012-02-02 2 views
0

Как говорится в названии ... возможно ли создать случайное 16-значное число с jquery?JQuery создать случайное 16-значное число возможно?

+4

'Math.round (Math.random() * 1E16)' – Chad

+1

http://stackoverflow.com/questions/1527803/generating-random-numbers-in-javascript – mrtsherman

+0

У jquery нет никаких утилит для выполнения этого, вам нужно просто использовать простой javascript. – ggreiner

ответ

10

Просто используйте:

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

EDIT:

Обратите внимание, что есть около 1/10 шанс меньшего количества цифр. Если Math.random() генерирует что-то вроде 0.0942104924071337, то 0.0942104924071337 * 1E16 is 0942104924071337 который оценивает 942104924071337; 15-значное число.

Единственный способ гарантировать 100%, что число 16 цифр в длину, состоит в том, чтобы оно было сформировано как строка. Используя этот метод, я бы рекомендовал @ ответ rjmunro в:

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

, пожалуйста, кто-то объяснит мне «1E16» :) – ajax333221

+0

Его сокращенная форма научной нотации. поэтому '1E16 == 1 * (10^16)'. Вы можете увидеть больше информации [здесь] (http://en.wikipedia.org/wiki/Scientific_notation#E_notation) – Chad

+0

Я считаю, что вы не хотели использовать 'Math.floor', так как это создавало бы числа от' 0-15 ' – ajax333221

5

Нет, используйте JAVASCRIPT!

jQuery не является каким-то волшебным джином.

+0

Это только в: jQuery может предоставить 2 желания, что делает его 1 желанием не быть джинном. – Chad

+0

+1 Это повторялось много раз, но, похоже, его нужно повторить еще больше. –

+0

'$ ('li'). RandomSixteenDigitNumber;' работает, я думаю. – mrtsherman

6

Не с jQuery, нет, но вы можете сделать это с помощью простого javascript.

Начать с Math.random() и конкатенировать 2 работает вместе.

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

Это должен быть принятый ответ – ajax333221

1

Это задача, которая намного лучше подходит для сырого javascript. Например

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

Это не просто «лучше подходит для сырого javascript», это не имеет никакого отношения к jQuery вообще. Это как сказать «Как я могу сделать яблочный пирог, используя только апельсины?» – rjmunro

0

Я просто попытался с ответом @rjmunro «ы.
К сожалению, он генерирует строку менее 16digits,
, но очень редко, примерно раз в 10 миллионов раз.

Вот мой код тестирования, работает в 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 Микадзе «s производят меньше длины строки, так что я в конце концов принять путь с некоторой концепцией своего решения:

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 
+0

Пожалуйста, создайте ваш вопрос. – Nilambar

+0

Я принимаю другой путь. Позвольте мне отредактировать мой ответ и предоставить мое решение. – ddhp

0

и может использовать эту функцию для генерации случайных чисел, просто передать минимальные и максимальные параметры

function randomInt(min, max) { 

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

случайное число 16, использование

randomInt(0, 9999999999999999); 
Смежные вопросы