[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: генератор неповторяющихся случайных чисел
Дашенька
Помогите,плиз,я уже совсем запуталась,вот я написала код скрипта
<script type="text/javascript">
var
arr = new Array();
n = 10;
M = 5;
L = 3;
for (i = 0; i < n; i++)
{
var tmp = Math.floor(Math.random() * 1001);
arr[i]=tmp;
if (arr[i]%M == L)
document.write(arr[i]+"<br />");
}
</SCRIPT>

где заполняю массив случайными числами,а потом вывожу те,которые равны,при делении с остатком,3,но я бы хотела ещё добавить туда такую вещь,чтобы эти случайные числа не повторялись,и вот я не знаю как это сделать,я совсем запуталась,помогите,подскажите,плиз.
Заранее благодарю.
qpayct
ну так, если сходу - долго не думая: делай
n = 20
и бери первые 10 неповторяющихся вспомогательной проверкой на совпадение
function chkn(n, arr) {
foreach num(arr)
if (num == n) return true;
}
Michael
var arr = new Array();
var n = 10, M = 5, L = 3;
var objIs = {};
var flag = null;
for (i = 0; i < n; i++)
{
var flag = false;
while (!flag)
{
var tmp = Math.floor(Math.random() * 1001);
if (!(tmp in objIs)) {
objIs[tmp] = '1';
flag = true;
}
}

arr[i]=tmp;
if (arr[i]%M == L)
document.write(arr[i]+"<br />");
}


_____________
There never was a struggle in the soul of a good man that was not hard
Дашенька
а что означает это строчка?
var objIs = {};

эта?
     while (!flag)

эта
        if (!(tmp in objIs)) 

и эта
             objIs[tmp] = '1';


заранее извините за глупые вопросы,просто я только учусь и хочу понять
Дашенька
только меня тут смущает одна вещь,по идее мы не знаем какие изначально были числа в массиве,ведь мы выводим сразу же те,которые равны L,соответственно не можем проверить правильность нагих так сказать подсчетов,мне кажется более правильным сделать так,чтобы вначале показать все числа,а потом показать те числа которые при делении с остатком,чей остаток равен L

но вот пока не могу сообразить как это сделать
Michael
Цитата (Дашенька @ 5.03.2010 - 17:45)
только меня тут смущает одна вещь,по идее мы не знаем какие изначально были числа в массиве,ведь мы выводим сразу же те

После цикла запиши:
document.write('Весь массив:' + arr.join(', '));



_____________
There never was a struggle in the soul of a good man that was not hard
Дашенька
что-то оно фигню какую-то выдает:
var arr = new Array();
var n = 10, M = 5, L = 3;
var objIs = {};
var flag = null;
for (i = 0; i < n; i++)
{
var flag = false;
while (!flag)
{
var tmp = Math.floor(Math.random() * 1001);
if (!(tmp in objIs)) {
objIs[tmp] = '1';
flag = true;
}
}
document.write('Весь массив:' + arr.join(', '));
arr[i]=tmp;
if (arr[i]%M == L)
document.write(arr[i]+"<br />");
}

может я что-то не так сделала?
Дашенька
я просто думала как,показать вначале весь массив,а потом показать те числа,которые L равны
Michael
Цитата
показать те числа,которые L равны

причем тут равны???
те числа остаток от деления которых на число M равен L
Нижеследующий код выведет сначала подходящие числа, а потом все числа одной строкой.

Свернутый текст
var arr = new Array();
var n = 10, M = 5, L = 3;
var objIs = {};
var flag = null;
for (i = 0; i < n; i++)
{
flag = false;
while (!flag)
{
var tmp = Math.floor(Math.random() * 1001);
if (!(tmp in objIs)) {
objIs[tmp] = '1';
flag = true;
}
}

arr[i]=tmp;
if (arr[i]%M == L)
document.write(arr[i]+"<br />");
}
document.write('Весь массив:' + arr.join(', '));


Если Вы не знаете как поменять местами вывод, то значит хотите чтобы за Вас была сделана Ваша работа а это в разделе Платных предложений. wink.gif


_____________
There never was a struggle in the soul of a good man that was not hard
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.