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

Поиск:

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


Новичок



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

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



Всем привет, нужно сгенерировать случайное число от 1 до 6, и результат вывести в edit, но при этом есть RadioGroup в котором также есть 6 items, так вот, в зависимости от того, какой itemIndex сейчас в RadioGroup, то результат случайного числа нужен, что бы было чаще именно то что в itemindex, кто знает как решить проблемку?
PM MAIL   Вверх
Frees
Дата 17.1.2011, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

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



Код

var
n: Integer;
begin
  n := Random(1);
  if n = 1 then
    n := RadioGroup1.ItemIndex + 1
  else
    n := Random(5) + 1;
  edit1.Text := IntToStr(n);
..





--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
Poseidon
Дата 17.1.2011, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

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



Цитата(alikoder @  17.1.2011,  15:36 Найти цитируемый пост)
нужно сгенерировать случайное число от 1 до 6

Цитата(alikoder @  17.1.2011,  15:36 Найти цитируемый пост)
то результат случайного числа нужен, что бы было чаще именно то что в itemindex

Как бы если есть какое-то условие, то результат уже не будет случайным. Код Frees не выполняет условие "нужен, что бы было чаще именно то что в itemindex". Тут нужно уточнить, на сколько чаще? В 2 раза? В 10? Это же теория вероятности. Тут вероятность нужно точно знать.


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Gwire
Дата 17.1.2011, 20:36 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Исли совместить написаное Frees и Poseidon:
Код

// Позволить использовать пользовательское значение
function AllowUseUserValue(ProbabilityPersent: Integer): Boolean;
begin
    Result:= Random(100)+1 < ProbabilityPersent;  // 1..100
end;

// Получить случайное или пользовательское значение с вероятностью Persent
function GetRandomOrUserValue(MaxRandVal, UserVal, Persent: Integer): Integer;
begin
    if AllowUseUserValue(Persent)
      then Result:= UserVal
      else Result:= Random(MaxRandVal) + 1;
end;


PM MAIL   Вверх
alikoder
Дата 18.1.2011, 08:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Gwire что то я непойму, но куда функции вписывать если юзать код Frees-а
PM MAIL   Вверх
Gwire
Дата 23.1.2011, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



alikoder, без обид, но если ты дорос до классов, нужно знать как вызывать функции.
А по поводу - "куда вставлять", если уже совсем непонятно:
Код

procedure TForm1.Button1Click(Sender: TObject);
var N: Integer;
begin
    N:= GetRandomOrUserValue( 6, RadioGroup1.ItemIndex+1, 30);    // 30%
    Edit1.Text:= IntToStr(N);
end;


Примечание: Вероятность возникновения UserVal будет больше чем 30%,
так-как не икслючено появление UserVal в оставшихся 70% значениях
Примерное значение = 30% + (70% / 6)

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.0813 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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