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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.11.2016, 10:28   #1
Lektorfuja
Форумчанин
 
Аватар для Lektorfuja
 
Регистрация: 04.11.2016
Сообщений: 355
По умолчанию if random в диапазоне Pascal

Программа генерирует случайное число. Если число единица, то программа пишет "one". Если случайное число двойка, то программа пишет "two". Все это в небольшом диапазоне от 1 до 2. Как написать?
мой блог :patreon.com/hopkins1988 . facebook группы:"программирование на Андроид","
"Программирование чистый код"
Lektorfuja вне форума Ответить с цитированием
Старый 25.11.2016, 10:30   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Random(2)+1 генерит 1 или 2
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 25.11.2016, 10:32   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

ну и "программа" полностью

Код:
begin
  Randomize;
  if (1+Random(2))=2 then WriteLn('two') else WriteLn('one')
end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.11.2016, 14:17   #4
Lektorfuja
Форумчанин
 
Аватар для Lektorfuja
 
Регистрация: 04.11.2016
Сообщений: 355
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Random(2)+1 генерит 1 или 2
у меня генерирует только двойку.

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
ну и "программа" полностью

Код:
begin
  Randomize;
  if (1+Random(2))=2 then WriteLn('two') else WriteLn('one')
end.
Спасибо. Работает.

А как сделать в диапазоне от 1 до 3?
мой блог :patreon.com/hopkins1988 . facebook группы:"программирование на Андроид","
"Программирование чистый код"

Последний раз редактировалось Аватар; 25.11.2016 в 14:25.
Lektorfuja вне форума Ответить с цитированием
Старый 25.11.2016, 14:25   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

А если подумать над магической формулой для 1 и 2?

И не плоди подряд тучу сообщений. Правь последнее сообщение, если за ним других нет. Кнопка Правка
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 25.11.2016, 14:48   #6
Lektorfuja
Форумчанин
 
Аватар для Lektorfuja
 
Регистрация: 04.11.2016
Сообщений: 355
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
А если подумать над магической формулой для 1 и 2?
Пробовал. Не получается.
мой блог :patreon.com/hopkins1988 . facebook группы:"программирование на Андроид","
"Программирование чистый код"
Lektorfuja вне форума Ответить с цитированием
Старый 25.11.2016, 14:55   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Lektorfuja Посмотреть сообщение
Пробовал. Не получается.
Точно?! Вы нас не обманываете?

тогда чуть поясню.
Random(N) возвращает целое число от нуля до N, причём НЕ ВКЛЮЧАЯ N (т.е. может быть случайное число, равное N-1)

например, Random(2) вернёт псевдослучайное число 0 или 1

или, например,
Random(5) вернёт псевдослучайное число: 0, 1, 2, 3, 4

Вы видите, что случайные числа начинаются от нуля.
Если нужен другой диапазон, тогда нужно добавить смещение.

например, если нужны числа от 2 до 7,
тогда мы (1) подсчитываем, сколько чисел от 2 до 7 ===> ответ 6
2) смещение от нуля равно 2 (0+2 = 2)
получаем готовую формулу 2 + Random(6)

теперь справитесь с формулой для чисел от 1 до 3 ?!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.11.2016, 15:07   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Небось if ... then ... else if ... не получается? Тогда уж лучше case использовать или массив с наименованиями цифр
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 25.11.2016, 15:20   #9
Lektorfuja
Форумчанин
 
Аватар для Lektorfuja
 
Регистрация: 04.11.2016
Сообщений: 355
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Небось if ... then ... else if ... не получается? Тогда уж лучше case использовать или массив с наименованиями цифр
А как это написать?
мой блог :patreon.com/hopkins1988 . facebook группы:"программирование на Андроид","
"Программирование чистый код"
Lektorfuja вне форума Ответить с цитированием
Старый 25.11.2016, 15:44   #10
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Код:
i:=1+Random(3);
Код:
if i=1      then WriteLn('one') 
else if i=2 then WriteLn('two')
            else WriteLn('three');
Код:
case i of
1: WriteLn('one') ;
2: WriteLn('two');
3: WriteLn('three');
end;
Код:
const a: array[1..3] of String = ('one','two','three');
...
WriteLn(a[i]);
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Random и BigInteger (Pascal ABC) Danilkoo832832 Lazarus, Free Pascal, CodeTyphon 12 30.08.2016 15:55
Random (Pascal) spinogryz_ua Помощь студентам 3 23.01.2013 00:13
Random (pascal) spinogryz_ua Помощь студентам 6 09.01.2013 13:50
pascal random S0ap Помощь студентам 2 10.07.2011 17:49
Random ограничения (pascal) _fynjy_ Помощь студентам 24 11.01.2011 10:19