Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Правильно-ли работает RandomRange ? [D7, WinXP]


kyn66 ©   (2007-03-14 12:35:00) 

Мне необходимо, чтобы числа были из диапазона 1-3 включительно. Выствив условие

RandomRange(1, 3)

я получаю числа 1 и 2. А 3 где?

Выствив условие

RandomRange(1, 4)

я получаю числа 1, 2 и 3. Может это случайно 4 не попало в получаемый список ? Как правильно выставляются границы?


kyn66   (2007-03-14 18:09:00) [1]

А после переустановки винды вспоминай чего делал и опять компилируй заново?


RASkov   (2007-03-14 14:58:00) [2]

> [6] kyn66 ©   (14.03.07 13:23)

Ну или перепиши эту функцию с учетом(исправлением) этого косяка.....


kyn66   (2007-03-14 13:23:00) [3]

Ноняно, короче правильно берется тока нижний диапазон, а верхний нуно увеличивать на единицу для првильности


DrPass   (2007-03-14 12:50:00) [4]


> Рамиль ©   (14.03.07 12:47) [3]

Я хотел было поумничать, но опоздал. Ты сам разобрался :)


DrPass   (2007-03-14 12:49:00) [5]

Цитата из модуля Math:

function RandomRange(const AFrom, ATo: Integer): Integer;
begin
 if AFrom > ATo then
   Result := Random(AFrom - ATo) + ATo
 else
   Result := Random(ATo - AFrom) + AFrom;
end;


Т.к. Random выдает случайные числа, не включая указанную границу диапазона, то справка нагло врет :)


Рамиль   (2007-03-14 12:47:00) [6]

А, ну собсно понятно.

function Random [ ( Range: Integer) ];
In Delphi code, Random returns a random number within the range
0 <= X <Range.

А функция RandomRange

function RandomRange(const AFrom, ATo: Integer): Integer;
begin
 if AFrom > ATo then
   Result := Random(AFrom - ATo) + ATo
 else
   Result := Random(ATo - AFrom) + AFrom;
end;


Рамиль   (2007-03-14 12:44:00) [7]

В справке сказано включительно.

Description

RandomRange returns a random integer from the range that extends between AFrom and ATo (inclusive). RandomRange can handle negative ranges (where AFrom is greater than ATo).

Видимо ошибка, судя по работе функции получается включая AFrom и исключая ATo
странно как то


Сергей М.   (2007-03-14 12:40:00) [8]


> kyn66 ©   (14.03.07 12:35)


Либо в справке ошибка (д.б. exclusive вместо inclusive) либо логика ф-ции ошибочна (не соответствует заявленной в справке)


Наверх

Титульная страница Поиск, карта сайта Написать письмо