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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Случайные числа 
:(
    Опции темы
Rondo
Дата 11.5.2006, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



есть 4 случайных числа в диапозоне 1..9, как сделать чтобы они были случайными но их сумма была равна допустим 27?

например 
9981 = 27
6489= 27
 smile 
 
--------------------
Начинающий кодер  
PM MAIL ICQ   Вверх
_hunter
Дата 11.5.2006, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



создай массив таких чисел (сумма цифр в котором == 27) и выбирай число из этого массива.
 


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Yanis
Дата 11.5.2006, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Вот Delphi то под рукой нету... 4 раза отнимай от 27 числа из диапозона от 1 до 9, к одному из 4-х чисел прибавить разность 27 и 4-х найденых... Вроде ничего не напутал smile 


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


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: 14
Всего: 78



Код

type
  Tmass = 1..9;

begin
  Randomize;
  a := random(TMass);
  b := random(TMass);
  c := random(TMass);
  d := random(TMass);
  if (a + b + c + d) = 27 then {твои операторы};
end;
 


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
Ripper
Дата 11.5.2006, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Lonely soul...
**


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

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



Код

var
a:array [0..3] of integer;
i,sum:integer;
begin
sum:=27;
randomize;
repeat
 for i:=0 to 3 do
  a[i]:=random(9);
   until ((a[0]+a[1]+a[2]+a[3])=sum) ;
end;


Типа того т.е. пока не будет равно 27 запомлять эти случайные числа
 


--------------------
"Он знает: надо смеяться над тем, что тебя мучит, иначе не сохранишь равновесия, иначе мир сведет тебя с ума" - Над кукушкиным гнездом
PM MAIL ICQ   Вверх
_hunter
Дата 11.5.2006, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



а вас (обоих) не смущает то, что в худшем случае этот цикл несколько лет выполняться будет? 


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Alexeis
Дата 11.5.2006, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



_hunter, код Ripper у меня сработал за несколько итераций!

Добавлено @ 16:19 
У Guedda, явно опечатка (даже не компилируется) 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Yanis
Дата 11.5.2006, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(alexeis1 @  11.5.2006,  17:17 Найти цитируемый пост)
_hunter, код Ripper у меня сработал за несколько итераций!

Всё равно это не выход. Нужно генерировать, а не подбирать. 


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


Бывалый
*


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

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



Мне надо чтобы он сразу выкидывал числа суммой 27 smile 
--------------------
Начинающий кодер  
PM MAIL ICQ   Вверх
Yanis
Дата 11.5.2006, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Rondo @  11.5.2006,  17:39 Найти цитируемый пост)
Мне надо чтобы он сразу выкидывал числа суммой 27

см. post 3 


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


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



alexeis1, -- повезло smile

Rondo, засунь код в функцию -- будет сразу выкидывать 


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Rondo
Дата 11.5.2006, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Спасибо Yanis, твой способ помог  smile 
Вот что получилось:

Код

procedure TForm1.Button1Click(Sender: TObject);
const
  num = 27;
var
  a, b, c, d, sum, minus: integer;
begin
  randomize;
  a:= random(9);
  b:= random(9);
  c:= random(9);
  d:= random(9);
  sum:= a+b+c+d;
  minus:= num-sum;
  d:=d+minus;
  edit1.Text:= IntToStr(a)+' '+IntToStr(b)+' '+IntToStr(с)+' '+IntToStr(d);
  edit2.Text:= IntToStr(a+b+c+d);
end; 
   

Это сообщение отредактировал(а) Snowy - 11.5.2006, 17:39
--------------------
Начинающий кодер  
PM MAIL ICQ   Вверх
Snowy
Дата 11.5.2006, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Ндя. Способ не очень.
Так и вижу результат 1 + 1 + 1 + 24

Добавлено @ 17:42 
Даже простой перебор и то приличней.
Код

repeat 
  a:= random(9);    
  b:= random(9);    
  c:= random(9);    
  d:= random(9);
until a + b + c + d = 27;
 
PM MAIL   Вверх
Rondo
Дата 11.5.2006, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Да, я только что хотел об этом спросить smile Как сделать чтобы последнее число (d) если >10 то оно как то распределилось в другие?  smile  
--------------------
Начинающий кодер  
PM MAIL ICQ   Вверх
Yanis
Дата 11.5.2006, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Snowy @  11.5.2006,  18:41 Найти цитируемый пост)
Так и вижу результат 1 + 1 + 1 + 24

А что этот вариант не подходит под условие? 


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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