Форум программистов
 
Расширенный поиск
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Новички в программировании > Паскаль
Регистрация

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



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

Программа генерирует случайное число. Если число единица, то программа пишет "one". Если случайное число двойка, то программа пишет "two". Все это в небольшом диапазоне от 1 до 2. Как написать?
Lektorfuja вне форума   Ответить с цитированием
Старый 25.11.2016, 11:30   #2
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк, Украина
Сообщений: 15,437
Репутация: 5668
По умолчанию

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

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

Код:

begin
  Randomize;
  if (1+Random(2))=2 then WriteLn('two') else WriteLn('one')
end.

Serge_Bliznykov вне форума   Ответить с цитированием
Старый 25.11.2016, 15:17   #4
Lektorfuja
Форумчанин
 
Аватар для Lektorfuja
 
Регистрация: 04.11.2016
Адрес: Латвия
Сообщений: 214
Репутация: 25
По умолчанию

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

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

Код:

begin
  Randomize;
  if (1+Random(2))=2 then WriteLn('two') else WriteLn('one')
end.

Спасибо. Работает.

А как сделать в диапазоне от 1 до 3?

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

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

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

Цитата:
Сообщение от Аватар Посмотреть сообщение
А если подумать над магической формулой для 1 и 2?
Пробовал. Не получается.
Lektorfuja вне форума   Ответить с цитированием
Старый 25.11.2016, 15:55   #7
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 21,001
Репутация: 4764
По умолчанию

Цитата:
Сообщение от 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, 16:07   #8
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк, Украина
Сообщений: 15,437
Репутация: 5668
По умолчанию

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

Цитата:
Сообщение от Аватар Посмотреть сообщение
Небось if ... then ... else if ... не получается? Тогда уж лучше case использовать или массив с наименованиями цифр
А как это написать?
Lektorfuja вне форума   Ответить с цитированием
Старый 25.11.2016, 16:44   #10
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк, Украина
Сообщений: 15,437
Репутация: 5668
По умолчанию

Код:

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]);

__________________
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар на форуме   Ответить с цитированием
Ответ



Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Random и BigInteger (Pascal ABC) Danilkoo832832 Lazarus, Free Pascal, CodeTyphon 12 30.08.2016 16: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 11:19




08:52.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

Покупайте на сайте www.skinon.ru уникальные чехлы и наклейки для телефонов.
таргетированный трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru