Показать сообщение отдельно
  #16 (permalink)  
Старый 18.12.2013, 22:15
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,103


генератор цепочек неповторяющий подряд и равномерного распределения для любого количества элементов >=3.
<!DOCTYPE HTML>
<html>
<head>
  <title>Untitled</title>
</head>
<body>
<script>
function rund(e) {
    function d(b) {
        for (var a = b.length - 1; 0 < a; a--) {
            var c = Math.floor(Math.random() * (a + 1)),
            d = b[c];
            b[c] = b[a];
            b[a] = d
        }
        return b
    }
    var a = [],
        c = [];
    for (i = 0; i < e;) a[i] = ++i;
    d(a);
    return function () {
        var b = a.shift();
        c.push(b);
        1 == a.length && (d(c), a = a.concat(c), c = []);
        return b
    }
};

 var N = 40000,
     a = [],
     e = 4,
     z = rund(e),
     i;
 for (i = 0; i < e + 1; i++) {
     a[i] = 0;
 }
 for (i = 0; i < N; i++) {
     a[z()]++;
 }
 alert(a); //проверка равномерности ноль неучитывается
 for (i = 0; i < 40; i++) {
     document.write(z()+' '); //для примера
 }
</script>
</body>
</html>

Последний раз редактировалось рони, 18.12.2013 в 22:29.
Ответить с цитированием