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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.09.2012, 01:44   #1
winhttp
Пользователь
 
Регистрация: 29.07.2012
Сообщений: 98
По умолчанию Программисты-математики есть? алгоритм популярности

Как в игре какой нибудь азартной...
есть значение , например 100. Нужно сделать , чтобы например 10 выпадало чаще, чем 20 , 20 - чаще, чем 30 . В общем чтобы 100 выпадало раз в пятилетку
На ум приходит что то типа такого
Код:
10=768
20=384
30=192
40=96
50=48
60=24
70=12
80=6
90=3
100=1
i:=1+Random(768);
//а тут проверяем значение, если оно подходит в какой то диапазон, то 
// берем значение . Пример: выпало число 321 - это 30, выпало 16 -это 70 , если 1 то 100
собственно 10 будет часто выпадать, чем 70 например. нубский алгоритм. подскажите проще пожалуста

Последний раз редактировалось winhttp; 03.09.2012 в 01:58.
winhttp вне форума Ответить с цитированием
Старый 03.09.2012, 02:05   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Про теаорию вероятности почитайте. Занимательно. Алгоритмов тоже много, если поискать гуглом.
Человек_Борща вне форума Ответить с цитированием
Старый 03.09.2012, 02:49   #3
winhttp
Пользователь
 
Регистрация: 29.07.2012
Сообщений: 98
По умолчанию

спасибо, что указали, в какую сторону копать. на другом форуме такой же алгоритм нашёл, что и у меня
winhttp вне форума Ответить с цитированием
Старый 05.09.2012, 02:19   #4
maloun
Форумчанин
 
Аватар для maloun
 
Регистрация: 03.01.2011
Сообщений: 233
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Про теаорию вероятности почитайте. Занимательно. Алгоритмов тоже много, если поискать гуглом.
Не люблю читать, по этому пишу что взбредет в голову.
Вот написал, сам не знаю, что
Код:
program test;

uses
  windows,
  vcl.forms,
  System.SysUtils;

var
  len:integer;

function GetRandom(const value:integer):integer;
var
  i:integer;
begin
  result:=1;
  for i:=1 to value do
  begin
    result:=result*Random(100)+1;
    sleep(1)
  end;
  writeln(result);
end;

procedure Read2;
begin
  Read(len);
  while GetRandom(len)<>100 do Application.ProcessMessages;
end;

begin
  AllocConsole;
  repeat Read2
  until Application.terminated;
end.
этот способ завязан на перемножении результатов рандома, от 0 до 100.
Вводим 1, жмем enter. После кучи цифр(или сразу) показывается 100 и все останавливается.
Вводим 2, жмем enter - уже подольше... и т.д.
Вложения
Тип файла: rar random.rar (1.43 Мб, 10 просмотров)
пыжок

Последний раз редактировалось maloun; 05.09.2012 в 02:33.
maloun вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
программисты,есть подработка juliajuliajulia Фриланс 12 05.09.2011 21:11
Есть тут программисты из Кирова -=Virus=- Свободное общение 9 09.01.2011 04:36
Есть ли на форуме программисты пишущие в 1С VanHelsing Свободное общение 17 24.06.2009 19:12