Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.12.2019, 11:32   #1
anaschu
Форумчанин
 
Регистрация: 21.09.2012
Сообщений: 372
По умолчанию фиксация случайного числа. Random=1

Добрый. У меня в программе около 20ти раз вызывается рандом. не охота для каждого случая писать вместо k:=random(2) , менять k:=1 и так везде.
Есть ли способ зафиксировать генератор для данной программы на одном числе?
Занимаюсь:1.зверьком- покемончиком для компьютерного затончика. 2 IT-грибами,что бы скушать потом их с вами.3. цифровым обезьянками, как куны ударяют за тянками
anaschu вне форума Ответить с цитированием
Старый 23.12.2019, 11:48   #2
Heneken87
Форумчанин
 
Регистрация: 27.04.2012
Сообщений: 219
По умолчанию

Цитата:
Сообщение от anaschu Посмотреть сообщение
Добрый. У меня в программе около 20ти раз вызывается рандом. не охота для каждого случая писать вместо k:=random(2) , менять k:=1 и так везде.
Есть ли способ зафиксировать генератор для данной программы на одном числе?
Ну вынесите в отдельный метод.
Код:
function RndBool: Integer
begin
  Result := Random(1);
end
И во всех ваших 20 раз, проверяйте результат метода.

Код:
if RndBool = 0 then
 ...
else ...;
Ну или что там у Вас стоит.
Пишу много и развернуто

Последний раз редактировалось Heneken87; 23.12.2019 в 11:51.
Heneken87 вне форума Ответить с цитированием
Старый 23.12.2019, 14:21   #3
anaschu
Форумчанин
 
Регистрация: 21.09.2012
Сообщений: 372
По умолчанию

Фиксация случайного числа - randomize(0)? Вместо 0 может быть любое другое число, лишь бы не случайное. Но если будет ноль, то он будет выбирать от нуля до нуля. то есть каждый раз, когда я буду делать Random, у меня будет автоматически вызываться ноль? или нет? И можно ли это будет сделать сразу во всех юнитах?
Занимаюсь:1.зверьком- покемончиком для компьютерного затончика. 2 IT-грибами,что бы скушать потом их с вами.3. цифровым обезьянками, как куны ударяют за тянками

Последний раз редактировалось anaschu; 23.12.2019 в 14:23.
anaschu вне форума Ответить с цитированием
Старый 23.12.2019, 14:25   #4
anaschu
Форумчанин
 
Регистрация: 21.09.2012
Сообщений: 372
По умолчанию

Цитата:
Сообщение от Heneken87 Посмотреть сообщение
Result := Random(1);
вроде как результатом может быть либо ноль, либо один. или я не прав?
Занимаюсь:1.зверьком- покемончиком для компьютерного затончика. 2 IT-грибами,что бы скушать потом их с вами.3. цифровым обезьянками, как куны ударяют за тянками
anaschu вне форума Ответить с цитированием
Старый 23.12.2019, 14:42   #5
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

не охота для каждого случая писать вместо k:=random(2) , менять k:=1 и так везде.
для таких случаев (одновременная замена фиксированного значения сразу во многих местах) существует константы.
Код:
unit global;
 
const maxrnd =1;
один раз объявили (там где будет "видно" всех заинтересованным)
Код:
unit ....
 
uses global;

r:=random(maxrnd);
много раз используем. а пожелаем изменить...
Код:
 const maxrnd =1; 2; 10;
...и менять придется РОВНО в одном месте.
программа — запись алгоритма на языке понятном транслятору
evg_m на форуме Ответить с цитированием
Старый 24.12.2019, 17:00   #6
anaschu
Форумчанин
 
Регистрация: 21.09.2012
Сообщений: 372
По умолчанию

Если надо просто вместо рендома фиксированное значение мочь подставить напиши свою функцию

По типу
Function tolrand(rand: boolean): single
Begin
If rand then
Result := Random()
Else
Result := 0;
End;

И задавай rand глобально
Занимаюсь:1.зверьком- покемончиком для компьютерного затончика. 2 IT-грибами,что бы скушать потом их с вами.3. цифровым обезьянками, как куны ударяют за тянками
anaschu вне форума Ответить с цитированием
Старый 27.12.2019, 08:20   #7
Heneken87
Форумчанин
 
Регистрация: 27.04.2012
Сообщений: 219
По умолчанию

Цитата:
Сообщение от anaschu Посмотреть сообщение
Если надо просто вместо рендома фиксированное значение мочь подставить напиши свою функцию

По типу
Function tolrand(rand: boolean): single
Begin
If rand then
Result := Random()
Else
Result := 0;
End;

И задавай rand глобально
Это ты сам себе отвечаешь?)
Пишу много и развернуто
Heneken87 вне форума Ответить с цитированием
Старый 28.12.2019, 02:58   #8
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 16,216
По умолчанию

Поведение автора темы непонятное. Но я все таки дам ответ на поставленный вопрос. Достаточно просто заменить стандартную функцию Random на свою:
Код:
function random(range: integer): integer;
begin
  result := 1;
end;

var i: integer;
begin
  randomize;
  for i:=1 to 10 do
    writeln(random(2));
end.
Arigato вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод случайного числа, нужно десять таких результатов nikolokaputik80 PHP 6 29.01.2017 22:55
Постановка случайного числа в значение объекта Sashavslg Компоненты Delphi 1 12.10.2012 13:31
выбор случайного числа (турбо раскаль) pop3 Помощь студентам 1 05.07.2012 14:13
Вывод случайного числа quarty Общие вопросы Delphi 5 10.01.2011 17:35
Присвоение случайного числа изображению Волшебник_ Общие вопросы Delphi 6 29.03.2010 15:13