Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Выдававать весь массив случайном порядке
 
 автор: Bernex   (13.06.2006 в 17:34)   письмо автору
 
 

Дан массив с n элементов.

Требуется каждый раз выдавать значения этого массива в случайном поряке:
массив:1234......n

выдача:n241.....3
выдача:21n4....3

С хорошим перемешиванием... обязательно выдать все элементы! =)

   
 
 автор: 12345   (13.06.2006 в 20:08)   письмо автору
 
   для: Bernex   (13.06.2006 в 17:34)
 

И чтоб не халтурили, эй, вы, кто там возьмётся.

Автор: а в чём проблема7

   
 
 автор: Бог Зайцев   (13.06.2006 в 22:00)   письмо автору
 
   для: Bernex   (13.06.2006 в 17:34)
 

Код простенький, я бы сделал как-то так )



<script>
a=[0,1,2,3,4,5,6,7,8,9]; // Создаем массив, для 

наглядности с цыфирками )

var i = 0; 
var b = new Array();
while(i!=a.length)
{
q=Math.ceil(Math.random()*a.length)-1;

if(!b[q])
{
b[q]=1;
i++;
document.write(a[q]);
}
}

</script>

   
 
 автор: Bernex   (13.06.2006 в 22:42)   письмо автору
 
   для: Бог Зайцев   (13.06.2006 в 22:00)
 


Array.prototype.shuffle = function( b ) {
 var i = this.length, j, t;
 while( i ) {
  j = Math.floor( ( i-- ) * Math.random() );
  t = b && typeof this[i].shuffle!=='undefined' ? this[i].shuffle() : this[i];
  this[i] = this[j];
  this[j] = t;
 }
 return this;
};

   
 
 автор: RMW   (14.06.2006 в 00:29)   письмо автору
 
   для: Bernex   (13.06.2006 в 22:42)
 

Гы! А чё спрашивал тогда?

Бллин, а я ведь тоже хотел сделать как метод Array,
даже название уже придумал: типа - Array.mix().
Но видать не судьба :)

Долго тупил по поводу того, что эта зараза Math.random()
может несколько раз одно и то же число вернуть,
увидел как гениально просто сделано у Бога Зайцева и
думал, что щаз сделаю, но теперь уже смысла нет :)

   
 
 автор: Бог Зайцев   (14.06.2006 в 06:18)   письмо автору
 
   для: RMW   (14.06.2006 в 00:29)
 


Array.prototype.shuffle = function() {
var b = new Array(),c = new Array() 
for(i=0;i<(t=this.length);c[i-1]=b[q=(Math.ceil(Math.random()*t))]?i--:b[q]=this[q-1]) i++;
return c;
}

))))))))))))))))))))))))))))))))))))))))))))))))))))))

   
 
 автор: 12345   (14.06.2006 в 12:31)   письмо автору
 
   для: Бог Зайцев   (14.06.2006 в 06:18)
 

Кликните по странице<br>
<script>
shuff=function(a){var b=[];
  while(a.length)b.push(a.splice(Math.random(a.length)*a.length,1));
return b;}

document.write((a=[1,2,3,4,5,6,7,8,9,0])+'<br>');
document.onclick=function(){document.body.innerHTML+=shuff(a.slice(0))+'<br>';}
</script>

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования