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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.05.2012, 15:27   #1
Pein95
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 881
По умолчанию random

Ну вопшем есть задача: из трех чисел нужно угадать одно, у вас есть одна попытка, но после етого у вас есть возможность поменять свой выбор. Если хотите можете менять если нет то не менять)) Вопрос если я поменяю вибыор то вероятность правильного ответа возрастет? как по мне, то если поменять выбор, то вероятность возрестет, но я написал такой вот код:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Edit2: TEdit;
    Label4: TLabel;
    Memo1: TMemo;
    Button1: TButton;
    Label1: TLabel;
    Memo2: TMemo;
    Label2: TLabel;

    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  bool:boolean;
  result:integer;
  col:integer;

implementation

{$R *.dfm}











procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
a,b,result1,result2:integer;
begin
result1:=0;
result2:=0;
randomize;

for i := 1 to strtoint(edit2.Text) do
begin
  a:=random(3);
  memo1.Lines.Add('a='+inttostr(a));
  b:=random(3);
  memo1.Lines.Add('b='+inttostr(b));
  if a=b then
  result1:=result1+1;
end;
memo1.Lines.Add('result='+inttostr(result1));

for i := 1 to strtoint(edit2.Text) do
begin
  a:=random(3);
  memo2.Lines.Add('a='+inttostr(a));
  b:=random(3);
  b:=random(3);
  memo2.Lines.Add('b='+inttostr(b));
    if a=b then
  result2:=result2+1;
end;
memo2.Lines.Add('result='+inttostr(result2));



end;

procedure TForm1.FormCreate(Sender: TObject);
begin
bool:=true;
result:=0;
col:=1;
end;

end.
и в 4 случиях из 5 количество правильных ответов было больше в тому случие если я не менял свой выбор. Може быть что мой код не коректен, я в нем не очень уверен.
Pein95 вне форума Ответить с цитированием
Старый 12.05.2012, 16:29   #2
Pein95
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 881
По умолчанию

народ, отозвитесь кто-нибудь)))
Pein95 вне форума Ответить с цитированием
Старый 12.05.2012, 16:34   #3
SNUPY
Форумчанин
 
Регистрация: 15.02.2008
Сообщений: 621
По умолчанию

Увеличьте количество испытаний:
Код:
  Randomize;
  m := 0;
  j := 100000000;
  for j:=1 to j do
  begin
    a := Random(3);
    b := Random(3);
    c := Random(3);
    if a=c then inc(m);
  end;

  Memo1.Lines.Add('ñðåäíÿÿ '+FloatToStr(m/j));
результат:
средняя 0,333448646665514
Помог? Ну так нажми на весы!
SNUPY вне форума Ответить с цитированием
Старый 12.05.2012, 16:45   #4
Pein95
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 881
По умолчанию

все ок) но меня интересует ещо и математический аспект задачи, будит ли вероятность правильного ответа больше, когда я меняю вариант ответа)
Pein95 вне форума Ответить с цитированием
Старый 12.05.2012, 16:54   #5
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

задача сформулирована неполно. Это т.н. парадокс Монти Холла, и вероятность там плавает в зависимости от стратегии ведущего.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 12.05.2012, 16:55   #6
SNUPY
Форумчанин
 
Регистрация: 15.02.2008
Сообщений: 621
По умолчанию

вероятность a=b a<>c:
(1/3*1/3+1/3*1/3+1/3*1/3)*(1-1/3*1/3+1/3*1/3+1/3*1/3)=1/3*2/3=2/9
вероятность a<>b a=c:
(1-1/3*1/3+1/3*1/3+1/3*1/3)*(1/3*1/3+1/3*1/3+1/3*1/3)=2/3*1/3=2/9
вероятность a=b a=c:
(1/3*1/3+1/3*1/3+1/3*1/3)*(1/3*1/3+1/3*1/3+1/3*1/3)=1/3*1/3=1/9
Помог? Ну так нажми на весы!
SNUPY вне форума Ответить с цитированием
Старый 12.05.2012, 16:56   #7
Pein95
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 881
По умолчанию

ну вы видите мой код, и думаю понимаете стратегию, можете прощитать вероятность? просто я на даный момент владею математикой только на школьном уровне))я не открываю ничего просто меняю свой вариант всегда.
Pein95 вне форума Ответить с цитированием
Старый 12.05.2012, 17:00   #8
SNUPY
Форумчанин
 
Регистрация: 15.02.2008
Сообщений: 621
По умолчанию

Цитата:
Сообщение от Pein95 Посмотреть сообщение
ну вы видите мой код, и думаю понимаете стратегию, можете прощитать вероятность? просто я на даный момент владею математикой только на школьном уровне))
Эмм а я что вам привел выше постом?

Вероятность выпадения a=b равно в свою очередь сумме вероятностей a=b a<>c и a=b a=c т.е. 2/9+1/9=3/9=1/3=0,(3)

Вероятность выпадения a=c равно в свою очередь сумме вероятностей a=c a<>b и a=c a=b т.е. 2/9+1/9=3/9=1/3=0,(3)
Помог? Ну так нажми на весы!
SNUPY вне форума Ответить с цитированием
Старый 12.05.2012, 17:02   #9
Pein95
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 881
По умолчанию

сори не увидел)) спс оч благодарен)
Pein95 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Random AlinKoy Паскаль, Turbo Pascal, PascalABC.NET 0 02.05.2011 14:35
Random adm2010 Общие вопросы Delphi 4 23.01.2011 13:39
Random tabanga Помощь студентам 11 10.01.2011 23:45
Random ZET78 C++ Builder 5 23.05.2010 09:36
Random W_P Паскаль, Turbo Pascal, PascalABC.NET 2 08.10.2008 00:05