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

Поиск:

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


Бывалый
*


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

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



скока было статей про случайные числа но так нигде и не увидел

как выбрать случайное число из диапазона
например от 1000 до 9000
PM MAIL   Вверх
Данкинг
Дата 27.3.2007, 21:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

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



Код

var r:integer;

begin
randomize;
r:=random (8000)+1000;
end;




--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
VICTAR
Дата 27.3.2007, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Что-нибудь типа
Код

var a: integer;

randomize;
a:=random(9000)+1;
if a<1000 then a:=a+1000;

PM MAIL   Вверх
Yanis
Дата 27.3.2007, 22:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Так на всякий случай упомяну:
Цитата
Unit 
Math 

Syntax 
[Delphi] function RandomRange(const AFrom: Integer; const ATo: Integer): Integer;



--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
12usver12
Дата 27.3.2007, 23:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



пасиба всем !
PM MAIL   Вверх
Sunvas
Дата 28.3.2007, 19:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


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

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



Цитата(VICTAR @  27.3.2007,  21:41 Найти цитируемый пост)
a:=random(9000)+1;

Лучше уж 
Код

a:=random(9001);
 smile 


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
Snowy
Дата 28.3.2007, 19:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Sunvas, ответ неверный. Садись, два  smile 
Это 2 разных кода и дают разный результат.
А по сабжу - верный код во втором посте.
PM MAIL   Вверх
Sunvas
Дата 28.3.2007, 19:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


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

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



Цитата(Snowy @  28.3.2007,  19:25 Найти цитируемый пост)
Sunvas, ответ неверный. Садись, два   

Хм. Эт почему?
Код

{1}a:=random(9000)+1;
{2}a:=random(9001);

При {1} значения а возможны от 1 до 9000, при {2} от 0 до 9000. Действительно разница есть, но смотрим код VICTAR-а дальше:
Код

if a<1000 then a:=a+1000;

в первом случае мы получаем диапазон от 1001 до 9000 т.к. а не может быть 0, а во втором получаем то, что хотел автор от 1000 до 9000.

Или в чем моя ошибка? smile

Добавлено через 9 минут и 57 секунд
Вообще код VICTAR-а имеет недостаток: диапазон от 1000 до 2000 имеет более высокий приоритет нежели остальные - ведь 1100 получается и когда загадывается 100 и когда 1100.
Кода 
Данкинг избавлен от предыдущего недостатка, но r лучше сделать типа word, и random(8000) заменить на random(8001).


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
VICTAR
Дата 28.3.2007, 21:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



 smile 
Цитата(Sunvas @  28.3.2007,  19:50 Найти цитируемый пост)
Вообще код VICTAR-а имеет недостаток: 

ладно, только ногами не бейте  smile 

У Данкинг, получилось всех лучше, но все же и он не до конца прав: макс значение получается 8999  smile 


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


Соль и сахар
****


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

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



Цитата(VICTAR @  28.3.2007,  21:08 Найти цитируемый пост)
 макс значение получается 8999  

Я уже об этом писал:
Цитата(Sunvas @  28.3.2007,  19:50 Найти цитируемый пост)
random(8000) заменить на random(8001).


Остается только загадкой, почему Snowy, на меня наехал?..


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
VICTAR
Дата 28.3.2007, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



 smile 
Цитата(Sunvas @  28.3.2007,  21:31 Найти цитируемый пост)
Я уже об этом писал:

да, я проглядел....

Цитата(Sunvas @  28.3.2007,  21:31 Найти цитируемый пост)
Остается только загадкой, почему Snowy, на меня наехал?.. 

все ошибаются, даже гуру  smile 

PM MAIL   Вверх
Snowy
Дата 29.3.2007, 01:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Наехал, потому что ты приравниваешь разный код, дающий разный результат.
Да и не наезд это был. Замечание высказано в виде шутки smile
Никого не хочу обидеть. Обычное дело. Просто указал на некорректность.
Насчёт ошибаюсь... Не верно.
В условии сказано 
Цитата(12usver12 @  27.3.2007,  21:29 Найти цитируемый пост)
 от 1000 до 9000
Не указано, включая или нет.
Так что верны все значения от 1000 до 9000, включая и не включая границы. Таких 4 варианта. И все правильные smile
Смещать по условию - прямое нарушение распределения. Смещать нужно весь диапазон.
Поэтому правильный вариант номер 2.
И вообще не понятно, почему такой простой вопрос, породил такое количество реплик.
Его решение дано ещё 30 лет назад. Стандарт, можно сказать...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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