Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Цикл for(i=0;j=0...) (https://javascript.ru/forum/misc/26825-cikl-i%3D0%3Bj%3D0.html)

monolithed 23.03.2012 21:47

Цитата:

Сообщение от 9xakep
Мне сейчас надо их отсрочивать так, что бы они не повторялись

var array = [], count = 33, i = -1;

while(++i < count) {
    array.push(Math.random() * count | 0);
}

array.sort(function(a, b) {
    return a-b;
});

i = array.length;

while (i--) {
	if (array[i] == array[i-1])
        array.splice(i, 1);
}

alert( array.join( '\n' ) );


Цитата:

Сообщение от 9xakep
Зачем писать: 33 | 0?

Эта операция транзитивна Math.floor();

9xakep 23.03.2012 22:06

monolithed,
Да хватит писать мне решения :-E
Тем более у вас какая то не случайность получается О_о Почти все последовательное...А начало как посл. фибоначи:11235..Но все равно интересный способ :D

monolithed 23.03.2012 22:15

Цитата:

Сообщение от 9xakep
Да хватит писать мне решения

А для чего нужно было создавать тему?
Цитата:

Сообщение от 9xakep
А начало как посл. фибоначи

Значения рандомны
Цитата:

Сообщение от 9xakep
Тем более у вас какая то не случайность получается О_о Почти все последовательное..

Так я отсортировал массив, а потом удалил дубликаты.

9xakep 23.03.2012 22:19

Цитата:

Сообщение от monolithed (Сообщение 164631)
А для чего нужно было создавать тему?

ну создавал я как бы по-другому впоросу, вы меня спросили что мне надо сделать, я ответил :stop:
Цитата:

Сообщение от monolithed (Сообщение 164631)
Так я отсортировал массив, а потом удалил дубликаты.

Если уж на то пошло, это не то

nerv_ 23.03.2012 22:36

Цитата:

Сообщение от monolithed
nerv_, не 9xakep хотел так:

я просто сразу не понял ;)
9xakep, вся проблема в том, что Вы не можете сформулировать задачу)

monolithed 23.03.2012 22:46

Цитата:

Сообщение от 9xakep
Если уж на то пошло, это не то

Цитата:

Сообщение от 9xakep
На данный момент мне нужно сгенерировать 33 числа случайных числа, которые будут представлять из себя массив

Сделано
Цитата:

Сообщение от 9xakep
Мне сейчас надо их отсрочивать так, что бы они не повторялись

Сделано
Если не нужна сортровка по возрастанию, то можно так:

var array = [1, 3, 1, 10, 1, 3, 4, 7, 30], i = array.length, result = [];

while(i--) {
    if(result.indexOf(array[i]) == -1) 
        result.push(array[i]);
}

alert(result);


PS: только, нужно позаботится о наличии indexOf или не заморачиваться и сделать так:
result.join().search(array[i]+'\\b') == -1

рони 24.03.2012 00:37

9xakep,
функция формирования массива с уникальными данными с заданной длиной и диапазоном

9xakep 24.03.2012 08:43

monolithed,
рони,
nerv_,
Thanks...но у меня свой вариант появляется :)

9xakep 24.03.2012 12:46

Maxmaxmахimus,
Так как, я:" неумелые прогарммисты, неряхи, или новички " то я в принципе не понял что ты сказал

9xakep 24.03.2012 13:11

<script>
var let = [1,2,3,4,1,5] 
alert(let)
for(k=0;k<=let.length;k++) { 
console.log('k: '+let[k]) 
  for(j=0;j<let.length;j++) {
    if(k==j) j+=1;
    if(let[k]==let[j]) {
      let[k] = Math.random() * 6 | 0
    } else { 
continue;
 }
  }
}
alert(let)
</script>

Та идея что пришла в голову почти осуществилась...но есть некоторые изъяны..Пока он только находит и заменяет повторяющееся число, но не факт что в результате повторения не будет..
Например:
[1,2,3,4,1,5]
[2,0,3,4,1,5] // заменил первую цифру на 2, проверил, что 2 уже есть, и заменил ее на 0
Но:
[1,2,3,4,1,5]
[4,2,3,4,1,5] // что в роде такого получилось как-то...4 все равно осталась


Часовой пояс GMT +3, время: 23:33.