Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 06.06.2014, 15:58
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,518

рони, то же что у jsnb, только в профиль. Опять потенциально бесконечный цикл, при неудачном рандоме. И чем массив долинее тем шансы на это больше.
__________________
29375, 35
Ответить с цитированием
  #12 (permalink)  
Старый 07.06.2014, 17:03
Интересующийся
Отправить личное сообщение для dwarf Посмотреть профиль Найти все сообщения от dwarf
 
Регистрация: 22.05.2014
Сообщений: 16

Aetae, а если так оформить рендом.... все равно может в бесконечность уйти ?
var random = Math.round(min - 0.5 + Math.random()*(max-min+1));
Ответить с цитированием
  #13 (permalink)  
Старый 07.06.2014, 17:12
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,080

Aetae,

<script language="JavaScript" type="text/javascript">
function random(val,min,max,l)
{var arr = [],m = [],n = void(0), len = max-min;
  l--;
  if (len < l) return;
  for (var i=0; i<= len; i++){
      m[i] = i + min;
      m[i] == val && (n = i);
  }
  n !=  void(0) &&  m.splice(n,1)
  for (var i=0; i<l; i++) {n = Math.floor(Math.random()*(m.length)); arr[i]=m.splice(n,1);};
  n = Math.floor(Math.random()*(arr.length));
  arr.splice(n,0,val)
  return arr
}
document.write(random(3,0,20,4))
</script>

источник )))
Ответить с цитированием
  #14 (permalink)  
Старый 07.06.2014, 18:29
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,518

рони, вот, другое дело. Кончено при слишком большом диапазоне в памяти будет висеть гигантский массив, и я всё ещё считаю свой вариант лучше, но хоть так.)
__________________
29375, 35
Ответить с цитированием
  #15 (permalink)  
Старый 07.06.2014, 21:42
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,080

Сообщение от Aetae
но суть должна быть понятна.
Сообщение от Aetae
for(index = j; index && resultSorted[index-1] <= random; index--) random++;
а что делает эта строка?
Ответить с цитированием
  #16 (permalink)  
Старый 07.06.2014, 23:38
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,518

рони,
Пока есть среди уже подобранных(и отсортированных) числа меньше или равные числу сгенерированному на текущей итерации - инкрементируем оное.
Т.о. не допускается повторов, и при этом соблюдается нормальное распределение.

В моём коде две проблемы: наличие дублирующего, но отсортированного массива и использование условно-медленного splice.
__________________
29375, 35

Последний раз редактировалось Aetae, 08.06.2014 в 00:09.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как в шаблоне диррективы узнать массив это или строка? delias Angular.js 1 18.03.2014 07:33
Отправить, когда четко соберется массив vas88811 Events/DOM/Window 11 26.02.2014 21:55
Массив объектов doox911 Библиотеки/Тулкиты/Фреймворки 6 16.01.2014 22:36
Как создать многомерный массив FRIE Общие вопросы Javascript 29 02.06.2010 19:14
Подскажите, как вернуть js-скрипт массив Polkan AJAX и COMET 18 30.04.2010 23:30