Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.09.09;
Скачать: [xml.tar.bz2];

Вниз

Подскажите алгоритм...   Найти похожие ветки 

 
Alex_Sudakov   (2002-08-29 12:14) [0]

Господа, подскажите красивый алгоритм заполнения массива случайными числами, при чем числа повторятся не должны. Массив - array of integer;


 
Skier   (2002-08-29 12:15) [1]

>Alex_Sudakov
Тебе помогут : Random(...) и Randomize.
А дубликаты,IMHO, придётся самому искать...


 
Alex_Sudakov   (2002-08-29 12:21) [2]

Спасибо, но это несколько не то...:) Про Random я и сам догадался, а вот с дубликатами это проблема. Если делать Random(5) то скажем что-бы получить 3 можно этот рандом неделю вызывать. А может с первого раза...
ЗЫ Забыл уточнить - массив нужно залить случайными числами в диапазоне Low(Array) to High(Array).


 
Anatoly Podgoretsky   (2002-08-29 12:22) [3]

Если ты больше ничего сказать не хочешь, то тогда генерируешь число и сравниваешь со всеми предыдущими


 
Alex_Sudakov   (2002-08-29 12:23) [4]

И?
PS Здравствуй, Анатолий :)


 
Skier   (2002-08-29 12:23) [5]

>Alex_Sudakov
Чудес не бывает...


 
MBo   (2002-08-29 12:24) [6]

for i:=0 to 9 do
list.add(pointer(random(10));
for i:=0 to 9 do begin
k:=random(list.count);
rndarr[i]:=Integer(list[k]);
list.delete(k);
end;


 
Alex_Sudakov   (2002-08-29 12:25) [7]

А так хочется...:) И все же, неужели не существует КРАСИВОГО алгоритма? :(


 
Alex_Sudakov   (2002-08-29 12:26) [8]

2MBo В данном алгоритме будут повторяющиеся варианты.


 
MBo   (2002-08-29 12:27) [9]

>повторяющиеся варианты
нет.


 
Alex_Sudakov   (2002-08-29 12:28) [10]

Посмотри еще раз. :)


 
MBo   (2002-08-29 12:29) [11]

извиняюсь
for i:=0 to 9 do
list.add(pointer(i));


 
Alex_Sudakov   (2002-08-29 12:30) [12]

Ни какой разницы. Все равно буду повторяющиеся варианты.


 
MBo   (2002-08-29 12:35) [13]

в списке каждое число уникально, при добавлении в массив оно удаляется.
procedure TForm1.Button1Click(Sender: TObject);
var i,k:integer;
list:tlist;
begin
randomize;
list:=tlist.create;
for i:=0 to 9 do
list.add(pointer(i));
for i:=0 to 9 do begin
k:=random(list.count);
memo1.lines.add(inttostr(Integer(list[k])));
list.delete(k);
end;
вывод:

0
4
6
2
8
1
3
9
5
7


 
Jeer   (2002-08-29 12:36) [14]

Красивый - такой:

Заполнить массив заданного размера линейно.
Многократно выполнить обмен для случайных i,j ячеек.


 
Anatoly Podgoretsky   (2002-08-29 12:41) [15]

Это бы можно было делать, если бы Alex_Sudakov чуть больше чем сказад


 
Alex_Sudakov   (2002-08-29 13:07) [16]

2MBo Спасибо, действительно работает...:)
2Anatoly Podgoretsky Вообще-то информация была исчерпывающей...


 
DiamondShark   (2002-08-29 13:09) [17]


> ЗЫ Забыл уточнить - массив нужно залить случайными числами
> в диапазоне Low(Array) to High(Array).


Тогда очень просто

for i := Low(MyArray) to High(MyArray) do
MyArray[i] := i;
for i := Low(MyArray) to pred(High(MyArray)) do
SwapElement(i, i + Random(High(MyArray)-i+1));



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.09.09;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.007 c
1-27092
Lamer86
2002-08-28 17:55
2002.09.09
Как отлавить перемещение, удаление и переименование файлов


1-27097
MsGuns
2002-08-27 20:02
2002.09.09
Вылет на попытке высветить форму-заставку


8-27118
Doom
2002-05-08 20:28
2002.09.09
Получение изображения с веб- камеры


8-27125
Roksolan
2002-05-05 19:16
2002.09.09
Печать растров в реальных размерах


1-26962
Grande
2002-08-29 13:11
2002.09.09
Проект Cbuilder в Delphi7





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский