Чтобы иметь понимание между компилятором и программистом. Правило состоит в том, что исходный код должен иметь самый открытый публичный класс, и этот класс должен содержать основную функцию. Таким образом, без каких-либо путаницы / ограничения компилятор может получить доступ (общедоступный) класс и имя имени класса для файла класса. Также, поскольку этот класс содержит main (), выполнение файла класса даст правильный поток
Я бы предпочел сделать это примерно так:
generate = function(length)
{
var arr = [];
var n;
for(var i=0; i<length; i++)
{
do
n = Math.floor(Math.random()*20+1);
while(arr.indexOf(n) !== -1)
arr[i] = n;
}
return arr;
}
Это может обрабатывать генерацию до 20-значного UNIQUE случайного числа
JS
var generatedNumbers = [];
function generateRandomNumber(precision) { // precision --> number precision in integer
if (precision <= 20) {
var randomNum = Math.round(Math.random().toFixed(precision) * Math.pow(10, precision));
if (generatedNumbers.indexOf(randomNum) > -1) {
if (generatedNumbers.length == Math.pow(10, precision))
return "Generated all values with this precision";
return generateRandomNumber(precision);
} else {
generatedNumbers.push(randomNum);
return randomNum;
}
} else
return "Number Precision shoould not exceed 20";
}
generateRandomNumber(1);
как только он на самом деле попадает в число, то же самое
Он никогда не должен. Такие алгоритмы занимают больше времени, чем дольше они выполняются . Вы должны использовать другой подход:
Поместите все возможные числа в пул. Как только вы нарисуете номер, удалите его из пула. Как и в реальной жизни.
var pool = [1, 2, 3, 4, 5]; var getNumber = function () { if (pool.length == 0) { throw "No numbers left"; } var index = Math.floor(pool.length * Math.random()); var drawn = pool.splice(index, 1); return drawn[0]; };
window.onload = unRanNumGen(20, 1, 12);
//above, we need 12 random numbers between 20 (included) and 1(included)
function unRanNumGen(max, min, limit){
//max = maximum number [inclued] (range of numbers)
//min = minimum number [included] (range of numbers)
//limit = number of random numbers (how many numbers do you want?)
var pool = [genRan(max, min)];
for(i=0; i<limit; i++){
for(n = 0; n <i; n++){
if(pool[n] !== genRan(max, min)){
pool.push(genRan(max, min));
break;
}
}
}
function genRan(max, min){
var genRan = Math.floor(Math.random() * (max - min) + min);
return genRan;
}
alert(pool.join('\n')); //to display the array of random numbers
}