Přejít na obsah

Recommended Posts

Odesláno
В пивбаре за длинным столом - 36 посетителей.
Более того, сразу хочу предупредить тех, кто пытается увести решение в сторону - стол НЕ КРУГЛЫЙ, это раз.

 

Специально для Ignatа :) - посетители НЕ СИДЯТ друг напротив друга, так что официант ищет пару сидящих возле себя (1,2) - (2,3) - (3,4) и.д., а не напротив (1,2) - (3,4) - (5,6)... - это два.

 

И три - официант пьян! Так что не надо гонять его "при моделировании на компьютере" 1 000 000 раз - это в конце-концов негуманно! Дождёмся точного расчёта.

Odesláno

Кто-нибудь еще пробовал задачу 1 на компьютере прогонять (полный перебор делать, например( в чем я очень сомневаюсь), или просто моделировать испытания)

 

Просто самому интересно, правильно решил или нет.

Odesláno

Я в субботу написал прогу. Протестировал на малом количестве карт - считала правильно. Запустил - загнулась на варианте номер всего-то 1006... Я понимаю, если бы хотя бы на 1024 или пусть даже на 256, то и искал бы ошибку в декларации переменной, но 1006 :blink: - ничего не понимаю... Временно забил...

Odesláno
просто моделировать испытания

 

И так - эмпирический метод.

Написал програмулину которая мешает карты и проверяет наличие искомой последовательности карт.

Результат получается ~64%

Результат совпадает с оным полученным Ignat-ом.

Odesláno
И так - эмпирический метод.

Написал програмулину которая мешает карты и проверяет наличие искомой последовательности карт.

Результат получается ~64%

Результат совпадает с оным полученным Ignat-ом.

 

Главное, что с теорией совпало : 1-3809029/10434600~ 0.6349616660

 

А сколько испытаний было сделано?

Odesláno

bandGap а на каком языке писали? можете алгоритм показать для не технических людей? ну на языке программирования :rolleyes:

Odesláno

Так-с... у меня всё исправлено... прога работает - на малом количестве карт испытания прошли успешно, но запущу в субботу... А вдруг она сейчвс бы до утра перебирала?

Odesláno
bandGap а на каком языке писали? можете алгоритм показать для не технических людей? ну на языке программирования :rolleyes:

 

Алгоритм очень прост. Код целиком как есть, тут.

 

int runCount = int.Parse(tbRunCount.Text.Trim());

double successCounter = 0;

 

for(int i=0;i<runCount;i++)

{

cardDeck.MixCards();

if( cardDeck.CheckSuccess(CardNumber.Ace, CardNumber.Lady) )

successCounter++;

}

tbResult.Text = (successCounter/runCount).ToString();

 

public bool CheckSuccess( CardNumber cn1, CardNumber cn2 )

{

for( int i=0; i<35; i++)

{

 

if(arrayCardDeck.Number == cn1)

{

if(arrayCardDeck[i+1].Number == cn2)

return true;

}

 

if(arrayCardDeck.Number == cn2)

{

if(arrayCardDeck[i+1].Number == cn1)

return true;

}

}

return false;

}

Odesláno

bandGap

Пытался запустить, пишет MSCOREE.DLL was not found.

А как называется язык, на котором написана эта программа?

Я писал на обычном Паскале, вот

 

program cards;

USES CRT;

CONST N=1000000;

VAR

nn,i,j:longint;

P : real;

a :array[1..36] of integer;

f : integer;

expirience:integer;

otvet: real;

procedure makearray;

begin

randomize;

a[1]:=random(36)+1;

i:=2;

repeat

a:=random(36)+1;

f:=1;

for j:=1 to i-1 do

if a=a[j] then f:=0;

if f=1 then i:=i+1;

until i=37;

end;

procedure analiz;

begin

expirience:=0;

for i:=1 to 35 do

begin

if (a<5) and (a[i+1]>32) then expirience:=1;

if (a[i+1]<5) and (a>32) then expirience:=1;

end;

end;

BEGIN

P:=0;

for nn:=1 to N do

begin

makearray;

analiz;

if expirience=1 then P:=P+1;

end;

otvet:=P/N;

WRITE(otvet);

End.

Odesláno
bandGap

Пытался запустить, пишет MSCOREE.DLL was not found.

А как называется язык, на котором написана эта программа?

 

C#, .NET 2.0

Скорее вопрос, что за компуктер такой? :blink:

Pokud chcete odpovídat, musíte se přihlásit nebo si vytvořit účet.

Pouze registrovaní uživatelé mohou odpovídat

Vytvořit účet

Vytvořte si nový účet. Je to snadné!

Vytvořit nový účet

Přihlásit se

Máte již účet? Zde se přihlašte.

Přihlásit se
×
×
  • Vytvořit...