Stevendall Odesláno May 24, 2007 Nahlásit Odesláno May 24, 2007 В пивбаре за длинным столом - 36 посетителей.Более того, сразу хочу предупредить тех, кто пытается увести решение в сторону - стол НЕ КРУГЛЫЙ, это раз. Специально для Ignatа - посетители НЕ СИДЯТ друг напротив друга, так что официант ищет пару сидящих возле себя (1,2) - (2,3) - (3,4) и.д., а не напротив (1,2) - (3,4) - (5,6)... - это два. И три - официант пьян! Так что не надо гонять его "при моделировании на компьютере" 1 000 000 раз - это в конце-концов негуманно! Дождёмся точного расчёта.
Ignat Odesláno May 30, 2007 Nahlásit Odesláno May 30, 2007 Кто-нибудь еще пробовал задачу 1 на компьютере прогонять (полный перебор делать, например( в чем я очень сомневаюсь), или просто моделировать испытания) Просто самому интересно, правильно решил или нет.
Stevendall Odesláno May 30, 2007 Nahlásit Odesláno May 30, 2007 Я в субботу написал прогу. Протестировал на малом количестве карт - считала правильно. Запустил - загнулась на варианте номер всего-то 1006... Я понимаю, если бы хотя бы на 1024 или пусть даже на 256, то и искал бы ошибку в декларации переменной, но 1006 - ничего не понимаю... Временно забил...
bandGap Odesláno May 30, 2007 Nahlásit Odesláno May 30, 2007 Пошел ваять программу. По результатам отпишусь.
bandGap Odesláno May 31, 2007 Nahlásit Odesláno May 31, 2007 просто моделировать испытания И так - эмпирический метод. Написал програмулину которая мешает карты и проверяет наличие искомой последовательности карт. Результат получается ~64% Результат совпадает с оным полученным Ignat-ом.
Ignat Odesláno May 31, 2007 Nahlásit Odesláno May 31, 2007 И так - эмпирический метод. Написал програмулину которая мешает карты и проверяет наличие искомой последовательности карт. Результат получается ~64% Результат совпадает с оным полученным Ignat-ом. Главное, что с теорией совпало : 1-3809029/10434600~ 0.6349616660 А сколько испытаний было сделано?
bandGap Odesláno May 31, 2007 Nahlásit Odesláno May 31, 2007 А сколько испытаний было сделано? 1.000.000
vadim Odesláno May 31, 2007 Nahlásit Odesláno May 31, 2007 На закуску легкий десерт от Копперфильда. Фокус-покус с картами
agata Odesláno May 31, 2007 Autor Nahlásit Odesláno May 31, 2007 bandGap а на каком языке писали? можете алгоритм показать для не технических людей? ну на языке программирования
Stevendall Odesláno May 31, 2007 Nahlásit Odesláno May 31, 2007 Так-с... у меня всё исправлено... прога работает - на малом количестве карт испытания прошли успешно, но запущу в субботу... А вдруг она сейчвс бы до утра перебирала?
younghacker Odesláno May 31, 2007 Nahlásit Odesláno May 31, 2007 Разделите задачу на части и считайте в сети
bandGap Odesláno June 1, 2007 Nahlásit Odesláno June 1, 2007 bandGap а на каком языке писали? можете алгоритм показать для не технических людей? ну на языке программирования Алгоритм очень прост. Код целиком как есть, тут. 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; }
Ignat Odesláno June 1, 2007 Nahlásit Odesláno June 1, 2007 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.
bandGap Odesláno June 1, 2007 Nahlásit Odesláno June 1, 2007 bandGap Пытался запустить, пишет MSCOREE.DLL was not found. А как называется язык, на котором написана эта программа? C#, .NET 2.0 Скорее вопрос, что за компуктер такой?
Recommended Posts
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ý účetPřihlásit se
Máte již účet? Zde se přihlašte.
Přihlásit se