GDV 10007 Nahlásit příspěvěk Odesláno May 24, 2007 От гат, а? И про пиво, и про своё. Quote Sdílet tento příspěvek Odkaz na příspěvek Sdílet na ostatní stránky
Stevendall 0 Nahlásit příspěvěk Odesláno May 24, 2007 В пивбаре за длинным столом - 36 посетителей.Более того, сразу хочу предупредить тех, кто пытается увести решение в сторону - стол НЕ КРУГЛЫЙ, это раз. Специально для Ignatа - посетители НЕ СИДЯТ друг напротив друга, так что официант ищет пару сидящих возле себя (1,2) - (2,3) - (3,4) и.д., а не напротив (1,2) - (3,4) - (5,6)... - это два. И три - официант пьян! Так что не надо гонять его "при моделировании на компьютере" 1 000 000 раз - это в конце-концов негуманно! Дождёмся точного расчёта. Quote Sdílet tento příspěvek Odkaz na příspěvek Sdílet na ostatní stránky
Ignat 0 Nahlásit příspěvěk Odesláno May 30, 2007 Кто-нибудь еще пробовал задачу 1 на компьютере прогонять (полный перебор делать, например( в чем я очень сомневаюсь), или просто моделировать испытания) Просто самому интересно, правильно решил или нет. Quote Sdílet tento příspěvek Odkaz na příspěvek Sdílet na ostatní stránky
Stevendall 0 Nahlásit příspěvěk Odesláno May 30, 2007 Я в субботу написал прогу. Протестировал на малом количестве карт - считала правильно. Запустил - загнулась на варианте номер всего-то 1006... Я понимаю, если бы хотя бы на 1024 или пусть даже на 256, то и искал бы ошибку в декларации переменной, но 1006 - ничего не понимаю... Временно забил... Quote Sdílet tento příspěvek Odkaz na příspěvek Sdílet na ostatní stránky
bandGap 0 Nahlásit příspěvěk Odesláno May 30, 2007 Пошел ваять программу. По результатам отпишусь. Quote Sdílet tento příspěvek Odkaz na příspěvek Sdílet na ostatní stránky
bandGap 0 Nahlásit příspěvěk Odesláno May 31, 2007 просто моделировать испытания И так - эмпирический метод. Написал програмулину которая мешает карты и проверяет наличие искомой последовательности карт. Результат получается ~64% Результат совпадает с оным полученным Ignat-ом. Quote Sdílet tento příspěvek Odkaz na příspěvek Sdílet na ostatní stránky
Ignat 0 Nahlásit příspěvěk Odesláno May 31, 2007 И так - эмпирический метод. Написал програмулину которая мешает карты и проверяет наличие искомой последовательности карт. Результат получается ~64% Результат совпадает с оным полученным Ignat-ом. Главное, что с теорией совпало : 1-3809029/10434600~ 0.6349616660 А сколько испытаний было сделано? Quote Sdílet tento příspěvek Odkaz na příspěvek Sdílet na ostatní stránky
bandGap 0 Nahlásit příspěvěk Odesláno May 31, 2007 А сколько испытаний было сделано? 1.000.000 Quote Sdílet tento příspěvek Odkaz na příspěvek Sdílet na ostatní stránky
vadim 0 Nahlásit příspěvěk Odesláno May 31, 2007 На закуску легкий десерт от Копперфильда. Фокус-покус с картами Quote Sdílet tento příspěvek Odkaz na příspěvek Sdílet na ostatní stránky
agata 1 Nahlásit příspěvěk Odesláno May 31, 2007 bandGap а на каком языке писали? можете алгоритм показать для не технических людей? ну на языке программирования Quote Sdílet tento příspěvek Odkaz na příspěvek Sdílet na ostatní stránky
Stevendall 0 Nahlásit příspěvěk Odesláno May 31, 2007 Так-с... у меня всё исправлено... прога работает - на малом количестве карт испытания прошли успешно, но запущу в субботу... А вдруг она сейчвс бы до утра перебирала? Quote Sdílet tento příspěvek Odkaz na příspěvek Sdílet na ostatní stránky
younghacker 7 Nahlásit příspěvěk Odesláno May 31, 2007 Разделите задачу на части и считайте в сети Quote Sdílet tento příspěvek Odkaz na příspěvek Sdílet na ostatní stránky
bandGap 0 Nahlásit příspěvěk 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; } Quote Sdílet tento příspěvek Odkaz na příspěvek Sdílet na ostatní stránky
Ignat 0 Nahlásit příspěvěk 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. Quote Sdílet tento příspěvek Odkaz na příspěvek Sdílet na ostatní stránky
bandGap 0 Nahlásit příspěvěk Odesláno June 1, 2007 bandGap Пытался запустить, пишет MSCOREE.DLL was not found. А как называется язык, на котором написана эта программа? C#, .NET 2.0 Скорее вопрос, что за компуктер такой? Quote Sdílet tento příspěvek Odkaz na příspěvek Sdílet na ostatní stránky