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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.04.2009, 12:47   #1
Kolhan
 
Регистрация: 16.04.2009
Сообщений: 8
По умолчанию [Delphi]: Выпадение чисел с опредёлнным процентом вероятности.

Здраствуйте

помогите создать генератор, который будет выдавать числа зависящий от процента их выпадения. Например есть 3 числа(1,2,3) процент выпадения числа 1 - 20%, числа 2 - 30%, числа 3 - 50%.
Kolhan вне форума Ответить с цитированием
Старый 19.04.2009, 12:50   #2
Levsha100
Заблокирован
Старожил
 
Регистрация: 20.07.2008
Сообщений: 4,032
Радость

Код:
Randomize;
a:=Random()*100;
case a do
  1..20: B:=1;
  21..50: B:=2;
end;
И тд
Levsha100 вне форума Ответить с цитированием
Старый 19.04.2009, 14:16   #3
Kolhan
 
Регистрация: 16.04.2009
Сообщений: 8
По умолчанию

А если к примеру надо ещё сделать так чтобы пользователь задавал проценты
Kolhan вне форума Ответить с цитированием
Старый 19.04.2009, 17:16   #4
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
А если к примеру надо ещё сделать так чтобы пользователь задавал проценты
Объявляете массив из 100 элементов.
Пользователь вводит числа и проценты их выпадения. Берем первое. Допустим, у него 20%. Забиваем первые 20 элементов массива этим числом. Берем второе число. Пусть у него 34%. Забиваем следующие 34 элемента вторым числом. И т.д.
Ну и потом берем рандомно элемент из этого массива.

-------------
Вот набросал на паскале.
Код:
uses crt;
var
mas : array[1..100] of integer;
chisla : array[1..100] of integer;
n,p,a : integer;
i,k,j : integer;

function getrandel : integer;
var t : integer;
begin
t := random(100)+1;
getrandel := mas[t];
end;
{----------}
procedure check;
var i,j,r : integer;
k : array[1..200] of integer;
begin
for i:=1 to n do
 k[i] := 0;
for i:=1 to 100 do
 begin
 r := getrandel;
 for j:=1 to n do
  if r = chisla[j] then inc(k[j]);
 write(r);
 if i mod 20 = 0 then writeln;
 end;

writeln('-------------');
writeln('Statistic: ');
for i:=1 to n do
 writeln('Chislo ',chisla[i],' vypalo ',k[i],' raza');
writeln;
end;

begin
clrscr;
randomize;
write('Kolichestvo elementov: ');
readln(n);
k := 1;
for i:=1 to n do
 begin
 write('Vvedite chislo ',i,': ');
 readln(a);
 chisla[i] := a;
 write('Vvedite procent vypadaniya: ');
 readln(p);
 for j:=1 to p do
  begin
  mas[k] := a;
  inc(k);
  end;
 end;
{-------}
check;

readln;
end.
Никаких проверок нет. Вводимые данные должны быть корректны.
Вводите числа и их проценты.
Процедура check выводит 100 рандомных чисел и статистику выпадания
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]

Последний раз редактировалось Sazary; 19.04.2009 в 17:34.
Sazary вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача не теорию вероятности *Оксана* Помощь студентам 5 18.12.2008 10:46
Генерация последовательности псевдослучайных натуральных чисел с требуемым распределением вероятности elsin Фриланс 4 19.11.2008 08:57
Теория вероятности joga Microsoft Office Excel 14 13.10.2008 20:21