Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Как выбрать случайное число из списка???


Автор: ZNatasha 4.2.2008, 21:12
Как выбрать число случайным образом не из диапозона, а из конкретных чисел. Например 2, 4 , 9 нужно выбирать случайным образом одно из чисел...

Автор: lukas 4.2.2008, 21:17
Код

function RandomEx(Arr: Array of Integer): Integer;
begin
  Result := Arr[Random(High(Arr)+1)];
end;


...

RandomEx([2,4,9]);

Автор: ZNatasha 4.2.2008, 21:19
Это два разных способа или один продолжение другого???

Автор: THandle 4.2.2008, 21:20
ZNatasha, это функция и её вызов smile 

Автор: VICTAR 4.2.2008, 21:53
lukas, нумерация в массивам, как правильно начинается с нуля. Правильней было бы написать
Код

function RandomEx(Arr: Array of Integer): Integer;
begin
  Result := Arr[Random(length(Arr))];
end;


Упс.. сорри я написал тоже самое. Плохо посмотрел твой код =) 

Автор: lukas 4.2.2008, 21:58
это не особо меняет дело.... 

Автор: Shaggy 5.2.2008, 16:28
RandomFrom

Автор: Akella 5.2.2008, 23:29
ZNatasha, А список в каком виде? Может у тебя TStringList?

Автор: valerchi 13.7.2010, 10:15
Подскажите новичку, почему генератор случайных чисел (random) в delphi генерирует вроде бы случайные числа, но стоит закрыть программу, а потом её открыть, включить и начать заново генерировать случайные числа, как сразу стаёт видно, что эти числа начинают повторяться в таком порядке, в котором они были при первом запуске программы. Вот отрывок из программы:
Код

repeat
n:=random (18595558800);


Автор: PsiMagistr 13.7.2010, 10:32
Для того, чтобы числа каждый оказывались разными необходимо один раз использовать оператор Randomize. Использовать достаточно один раз, чаще всего в событии загрузки формы.

Автор: valerchi 13.7.2010, 17:23
Цитата(PsiMagistr @ 13.7.2010,  10:32)
Для того, чтобы числа каждый оказывались разными необходимо один раз использовать оператор Randimize. Использовать достаточно один раз, чаще всего в событии загрузки формы.

То есть вместо "n:=random (18595558800);" пишем  "n:=randimize (18595558800);"? Я так понял?

Добавлено через 10 минут и 36 секунд
Цитата(valerchi @ 13.7.2010,  17:23)
Цитата(PsiMagistr @ 13.7.2010,  10:32)
Для того, чтобы числа каждый оказывались разными необходимо один раз использовать оператор Randimize. Использовать достаточно один раз, чаще всего в событии загрузки формы.

То есть вместо "n:=random (18595558800);" пишем  "n:=randimize (18595558800);"? Я так понял?

А точнее randomize?

Автор: THandle 13.7.2010, 17:37
valerchi, нет. Посмотри в справке/нет про Randomize. Тебе просто нужно вызвать её один раз в начале работы программы. А потом все оставить как было.

Вызов - как вызов процедуры без параметров.

Автор: valerchi 13.7.2010, 17:48
[QUOTE=valerchi,13.7.2010,  17:23]
Цитата(PsiMagistr @ 13.7.2010,  10:32)
Для того, чтобы числа каждый оказывались разными необходимо один раз использовать оператор Randimize. Использовать достаточно один раз, чаще всего в событии загрузки формы.


Всё, большое спасибо, я разобрался smile 

Автор: valerchi 17.7.2010, 21:58
Я хотел спросить, если кто знает, сколько случайных чисел (1 - 0) функция random выдаёт в секунду?

Автор: ~FoX~ 18.7.2010, 09:30
Цитата(valerchi @  17.7.2010,  22:58 Найти цитируемый пост)
Я хотел спросить, если кто знает, сколько случайных чисел (1 - 0) функция random выдаёт в секунду? 

Сколько попросишь... Число генерируеться алгоритмом на основе счетчика тактов процессора...

Автор: valerchi 18.7.2010, 13:40
Цитата(~FoX~ @ 18.7.2010,  09:30)
Цитата(valerchi @  17.7.2010,  22:58 Найти цитируемый пост)
Я хотел спросить, если кто знает, сколько случайных чисел (1 - 0) функция random выдаёт в секунду? 

Сколько попросишь... Число генерируеться алгоритмом на основе счетчика тактов процессора...

А как понять сколько попросишь? Как-то не логично, не может же генератор выдать децилион чисел в секунду... У него же тоже какие-то пределы есть

Автор: valerchi 18.7.2010, 19:40
Я для чего это спрашиваю, .. может кто знает, можно ли как-то заставить генератор случайных чисел работать быстрее?


Автор: ~FoX~ 19.7.2010, 09:36
Цитата(valerchi @  18.7.2010,  20:40 Найти цитируемый пост)
Я для чего это спрашиваю, .. может кто знает, можно ли как-то заставить генератор случайных чисел работать быстрее?

Запусти два, три, пятьдесят генераторов, в разных потоках...
Тока понять не могу зачем?

Автор: valerchi 19.7.2010, 13:09
Цитата(~FoX~ @ 19.7.2010,  09:36)
Цитата(valerchi @  18.7.2010,  20:40 Найти цитируемый пост)
Я для чего это спрашиваю, .. может кто знает, можно ли как-то заставить генератор случайных чисел работать быстрее?

Запусти два, три, пятьдесят генераторов, в разных потоках...
Тока понять не могу зачем?

Понял, большое спасибо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)