Javascript.RU

PHP-функция: shuffle

Javascript:

function shuffle( array ) {	// Shuffle an array
	// 
	// +   original by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)

	for(var j, x, i = array.length; i; j = parseInt(Math.random() * i), x = array[--i], array[i] = array[j], array[j] = x);
	return true;
}

Примеры:

shuffle(['Kevin', 'van', 'Zonneveld']);
true


Автор: Гость (не зарегистрирован), дата: 6 мая, 2010 - 07:54
#permalink

Ахренеть функция. Сам программирую на javascript 2 года, но такой гипкости исполнения еще не видел


Автор: Wink (не зарегистрирован), дата: 2 февраля, 2011 - 11:00
#permalink

Перемешивание массива можно сделать с помощью функции sort()

function shuffle(arr) {
    return arr.sort(function() {return 0.5 - Math.random()});
}

Автор: Jeka (не зарегистрирован), дата: 11 марта, 2012 - 22:20
#permalink

С помощью сорта сделать то можно. Но разброс будет очень не равномерный, поэтому его применение не желательно. Лучше делать вот так.

Array.prototype.shuffle = function() {
for (var i = this.length - 1; i > 0; i--) {
var num = Math.floor(Math.random() * (i + 1));
var d = this[num];
this[num] = this[i];
this[i] = d;
}
return this;
}


Автор: erik (не зарегистрирован), дата: 13 марта, 2012 - 15:16
#permalink

с каких пор в рандоме нужна равномерность?


Автор: Гость (не зарегистрирован), дата: 17 июля, 2014 - 18:40
#permalink

С тех пор, как люди начали изучать случайные числа и теорию вероятностей.


Автор: Гость (не зарегистрирован), дата: 12 июля, 2012 - 14:09
#permalink

Вы конечно извините, но пример, приведенный в статье - просто верх говнокода


Автор: Гость (не зарегистрирован), дата: 19 октября, 2012 - 16:12
#permalink

А вот моя реализация

sqArray = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16];
sqArray.sort(function(a,b){ var c = Math.random()*10; return c<5} );


Автор: salexseen, дата: 4 апреля, 2014 - 14:46
#permalink
Array.prototype.myshuffle = function(){
        var newArray = [];
        var index = {};
        var lenArray = this.length;

        for (var x = (lenArray - 1); x >= 0; x--){
            var rand = Math.round(Math.random() * (lenArray - 1));
            var key = 'key_' + rand;
            if (key in index){
                x++;
                continue;
            } else {
                index[key] = this[rand];
                newArray.push(this[rand]);
            }
        }

        return newArray;
    };

Вызываем вот так

[1,2,3,4,5,6,7,8,9,0].myshuffle();

Автор: Ostic_ (не зарегистрирован), дата: 13 сентября, 2016 - 00:36
#permalink
function shuffle(array) {
  'use strict';
        let n = a.length;
        for (let i = 0; i < n; i++) {
            let r = i +  getRandomInt(i, n);     
            let temp = a[i];
            a[i] = a[r];
            a[r] = temp;
        }
        function getRandomInt(min, max) {
            return Math.floor(Math.random() * (max - min)) + min;
       };
};

как-то так. код не проверял - вообще 2 недели программирую на js.


Отправить комментарий

Приветствуются комментарии:
  • Полезные.
  • Дополняющие прочитанное.
  • Вопросы по прочитанному. Именно по прочитанному, чтобы ответ на него помог другим разобраться в предмете статьи. Другие вопросы могут быть удалены.
    Для остальных вопросов и обсуждений есть форум.
P.S. Лучшее "спасибо" - не комментарий, как все здорово, а рекомендация или ссылка на статью.
Содержание этого поля является приватным и не предназначено к показу.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Разрешены HTML-таги: <strike> <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <u> <i> <b> <pre> <img> <abbr> <blockquote> <h1> <h2> <h3> <h4> <h5> <p> <div> <span> <sub> <sup>
  • Строки и параграфы переносятся автоматически.
  • Текстовые смайлы будут заменены на графические.

Подробнее о форматировании

CAPTCHA
Антиспам
1 + 1 =
Введите результат. Например, для 1+3, введите 4.
 
Поиск по сайту
Содержание

Учебник javascript

Основные элементы языка

Сундучок с инструментами

Интерфейсы

Все об AJAX

Оптимизация

Разное

Дерево всех статей

Последние комментарии
Последние темы на форуме
Forum