![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Насчет randomiz а.... [D6, Win95/98]
nUcL34r © (2002-11-08 03:12:00)Доброго времени суток всем!
Пытался решить следующую задачу но ничего не вышло:
Вобщем даны числа от 1 до 10, требуется записать эти числа в массив в произвольном порядке и чтоб не повторялись....
Помогите кто может, pls......
Николай Быков (2002-11-08 05:31:00) [1]Ну да. Можно было и так сделать, я до таких хитростей редко додумываюсь, но тоже идея.
Еще можно было подключать разные виды сортировки ( http://algolist.manual.ru/) для этого дела
Almaz (2002-11-08 05:29:00) [2]
> Николай Быков © (08.11.02 05:13)
> Вот придумал!
> Когда ты заполнил массив, то просто прогоняешь его до того
> как найдешь повторяющийся элемент. Присваиваешь ему random(10)+1.
> Опять проверяешь.
Далеко не оптимальное решение. Представляете, сколько циклов может быть прокручено до получения результата :)))
Предложу такой способ:
var
Massiv: array [0..9] of Integer;
procedure Mix;
var
I, T, Rnd: Integer;
begin
// Заполняем массив
for I := 0 to 9 do Massiv[I] := I + 1;
// Перемешиваем
Randomize;
for I := 0 to 9 do
begin
Rnd := Random(10);
T := Massiv[I];
Massiv[I] := Massiv[Rnd];
Massiv[Rnd] := T;
end;
end;
Скорее всего он тоже не оптимален, но по крайней мере тут всего 2 цикла :)
Удачи.
Николай Быков (2002-11-08 05:26:00) [3]Вот так еще можно:
Присваиваешь random(10)+1 любой левой переменной. Проверяешь на совпадение. Если совпадает, то присваиваешь заново и проверяешь опять. Если не совпало, то присваиваешь эту переменную элементу массива
Николай Быков (2002-11-08 05:13:00) [4]Вот придумал!
Когда ты заполнил массив, то просто прогоняешь его до того как найдешь повторяющийся элемент. Присваиваешь ему random(10)+1. Опять проверяешь.
Николай Быков (2002-11-08 04:23:00) [5]
> чтоб не повторялись....
Упс. Забыл сделат проверку, чтобы не повторялись. Щас напишу
Николай Быков (2002-11-08 04:22:00) [6]на Паскале это так
uses crt;
const
n=10;
var
massiv:array [1..n] of integer;
i:integer;
begin
clrscr;
randomize;
for i:=1 to n do
begin
massiv[i]:=random(10)+1
write(massiv[i]:4);
end;
writeln;
textcolor(31);
writeln("Press any key");
readkey;
end.