Модераторы: Snowy, MetalFan, bems, Poseidon

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как выбрать случайное число из списка??? 
:(
    Опции темы
ZNatasha
Дата 4.2.2008, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 4.2.2008

Репутация: нет
Всего: нет



Как выбрать число случайным образом не из диапозона, а из конкретных чисел. Например 2, 4 , 9 нужно выбирать случайным образом одно из чисел...
PM MAIL   Вверх
lukas
Дата 4.2.2008, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 771
Регистрация: 23.2.2007

Репутация: 3
Всего: 15



Код

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


...

RandomEx([2,4,9]);


Это сообщение отредактировал(а) lukas - 4.2.2008, 21:21


--------------------
http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi.
PM MAIL WWW   Вверх
ZNatasha
Дата 4.2.2008, 21:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 4.2.2008

Репутация: нет
Всего: нет



Это два разных способа или один продолжение другого???
PM MAIL   Вверх
THandle
Дата 4.2.2008, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 50
Всего: 372



ZNatasha, это функция и её вызов smile 
PM   Вверх
VICTAR
Дата 4.2.2008, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1108
Регистрация: 6.10.2006

Репутация: 10
Всего: 80



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

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


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

Это сообщение отредактировал(а) VICTAR - 4.2.2008, 21:58
PM MAIL   Вверх
lukas
Дата 4.2.2008, 21:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 771
Регистрация: 23.2.2007

Репутация: 3
Всего: 15



это не особо меняет дело.... 


--------------------
http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi.
PM MAIL WWW   Вверх
Shaggy
Дата 5.2.2008, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 2.5.2007
Где: г.Ижевск

Репутация: 2
Всего: 5



RandomFrom
PM MAIL ICQ   Вверх
Akella
Дата 5.2.2008, 23:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 8
Всего: 329



ZNatasha, А список в каком виде? Может у тебя TStringList?
PM MAIL   Вверх
valerchi
Дата 13.7.2010, 10:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 163
Регистрация: 27.5.2008
Где: Геническ

Репутация: нет
Всего: нет



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

repeat
n:=random (18595558800);


PM MAIL   Вверх
PsiMagistr
Дата 13.7.2010, 10:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 479
Регистрация: 31.12.2009

Репутация: 1
Всего: 1



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

Это сообщение отредактировал(а) PsiMagistr - 13.7.2010, 17:51


--------------------
"Арфы нет? Возьмите бубен!

Ребята, будем жить!"

 (с) "В бой идут одни старики"

---

"ИЕ" - один из самых сумасшедших браузеров в нашей галактике.
PM MAIL   Вверх
valerchi
Дата 13.7.2010, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 163
Регистрация: 27.5.2008
Где: Геническ

Репутация: нет
Всего: нет



Цитата(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?
PM MAIL   Вверх
THandle
Дата 13.7.2010, 17:37 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 50
Всего: 372



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

Вызов - как вызов процедуры без параметров.
PM   Вверх
valerchi
Дата 13.7.2010, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 163
Регистрация: 27.5.2008
Где: Геническ

Репутация: нет
Всего: нет



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


Всё, большое спасибо, я разобрался smile 
PM MAIL   Вверх
valerchi
Дата 17.7.2010, 21:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 163
Регистрация: 27.5.2008
Где: Геническ

Репутация: нет
Всего: нет



Я хотел спросить, если кто знает, сколько случайных чисел (1 - 0) функция random выдаёт в секунду?
PM MAIL   Вверх
~FoX~
Дата 18.7.2010, 09:30 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 5
Всего: 68



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

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

Это сообщение отредактировал(а) ~FoX~ - 18.7.2010, 09:31


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0931 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.