Тема: Мішаний масив

Допоможіть написати код для того щоб можна було змішати у випадковій послідовності масив
Наприклад:
A(1,2,3,4,5)
в масив
A(3,2,5,1,4)

2

Re: Мішаний масив

Допоможу, чому б і ні. Але не напишу замість.

3

Re: Мішаний масив

quez написав:

Але не напишу замість.

????

4 Востаннє редагувалося koala (04.10.2014 08:34:35)

Re: Мішаний масив

https://en.wikipedia.org/wiki/Fisher–Yates_shuffle

Подякували: Stanislav Stecenko, Torbins2

5

Re: Мішаний масив

Я англійськой не знаю а пререводчик невсе переводе.

6

Re: Мішаний масив

А також ви не знаєте російської і не можете читати алгоритми в 3 рядки...

7

Re: Мішаний масив

Це ж треба, в нього ще й назва є.

8 Востаннє редагувалося Stanislav Stecenko (04.10.2014 09:07:06)

Re: Мішаний масив

var
  I,r: Integer;
  s:string;
begin
  for I := 0 to ListBox1.Items.Count-1 do
    begin
      r:=Random(ListBox1.Items.Count);
      s:=ListBox1.Items.Strings[i];
      ListBox1.Items.Strings[i]:= ListBox1.Items.Strings[r];
      ListBox1.Items.Strings[r]:=s;
    end;
end;

9

Re: Мішаний масив

1. Неправильно задані межі для генерації ВЧ. Список буде не зовсім випадковий - втім, якщо це тільки для інтерфейсу, згодиться. А от для тасування карт в грі на гроші - дуже погано.
2. Не використовуйте елементи управління для зберігання інформації - там не змінні, а властивості (property), і операції типу

ListBox1.Items.Strings[i]:= ListBox1.Items.Strings[r]; 

насправді роблять значно більше, ніж вам треба.
Хоча якщо елементів небагато, то так, звісно, легше писати.
3. Давайте зрозумілі імена змінним. Наприклад, якщо це список користувачів, то UserList буде значно краще пояснювати вам, що відбувається. А якщо боїтесь із типами заплутатися - використовуйте "угорський запис", наприклад, lbUserList (де lb - від ListBox).
4. Strings - типова властивість для Items, тому її можна опустити: ListBox1.Items.Strings[x] - те саме, що й ListBox1.Items[x].

Подякували: Torbins, Stanislav Stecenko2