2013-09-09 4 views
0

Я пытаюсь создать случайное число, как показано ниже, используя JavaScriptСлучайного числа затравки пользовательского время

function valid(form) { 
    var input = 0; 
    var input = document.getElementById('custom1').value; 
    var final_input = input.charAt(0); 
    var number = 1000000000 - Math.floor(Math.random() * 1000000000); 
    final_input = final_input + number; 
    document.getElementById('custom4').value = final_input; 
} 

Идея заключается в том, что она получит значение от «Custom1» (который является одним из полого ввода) а затем получит первый символ. После этого он добавит следующие 9 случайных цифр и добавит окончательное значение в custom4 (другое поле ввода) формы. Javascript работает до сих пор. Тем не менее, я предпочел бы, чтобы число случайных чисел было высечено с текущее время. Я думаю, что это будет действительно случайным. Это возможно?

+0

Вы должны были бы написать свой собственный ПСЧ. Собственный язык JavaScript не может быть посеян. – Bergi

ответ

2

JavaScript standard random API не поддерживает явный посев (что является позором). Вот the spec:

Возвращает числовое значение с положительным знаком, превышающим или равным 0 , но меньше 1, выбранное случайным или псевдослучайным образом с примерно равномерным распределением в течение этого диапазона, используя зависит от реализации алгоритм или стратегия. Эта функция не принимает аргументов .

Если вам действительно нужно засеять генератор заданным номером, вам понадобится использовать библиотеку, например this one (не проверено мной).

Но случайный API JavaScript неявно посеян, что гарантирует, что у вас будут разные результаты. Спецификация ECMAScript не указана в отношении того, как она засеяна, но, вероятно, все браузеры используют время для посева. MDN говорит

Генератор случайных чисел высевается из текущего времени, как в Java.

1

Я должен исправить себя. Это верно только для Mozilla (насколько я знаю): JavaScript random API использует уже текущее время в качестве семени. Нет необходимости делать это дважды (и это не поддерживается).

В спецификации не упоминается алгоритм или стратегии, как генерируется случайное число, и если и как оно посеяно.

+0

Так что каждый раз, когда я запускаю это, я получаю другое число. Я прав? Есть ли вообще вероятность того, что два числа будут такими же? –

+0

Да, это то, что вы назвали бы «случайным». Вы не знаете, какое число будет дальше. Это может быть одно и то же или любое другое. Все шансы равны. – tea2code

+0

hmmm, тогда я думаю, что я в неправильном направлении. Мне нужно уникальное случайное число :(Как это сделать? В основном мне нужны числа, созданные для того, чтобы быть действительно уникальными. –

0

Спасибо .. наконец у меня есть что-то вроде ниже

function valid(form) { 
    var input = 0; 
    var input = document.getElementById('custom1').value; 
    var final_input = input.charAt(0); 
    var number = new Date().valueOf(); /*1000000000 - Math.floor(Math.random() * 1000000000);*/ 
    final_input = final_input + number; 
    document.getElementById('custom4').value = final_input; 
}