Интеллект сервер                ВАЖНО!!! Просьба прочитать!
Login incorrect.

Напомнить пароль

О проекте 
Правила 
Вопрос дня 
Статистика 
ЧаВо 
Архив вопросов 
Сообщения 
Форум 
Конкурс вопросов 
Регистрация 



Сейчас на сервере:


Реклама:
   Интеллект форум
ID Автор
Дата созд.
Текст
Упс, по техническим причинам....
12420 dvitas
14-02-2008
00:02:12

Все, кина не будет, электричество закончилось?

                            Смайлы                                                                    • Вернуться к списку тем •

Страница 1 ... 4 5 6 7 8 » 9 « 10 11

13217
piters
31-03-2008
12:02:27

Подумываю заняться игорным бизнесом. Планы следующие.  

Зал. Слегка приглушенный свет, тихая музыка, официантки топлесс (или это лишнее?). В зале три игральных автомата. Объявление - "На каждый поставленный Вами рубль, доллар, евро - в случае выигрыша возврат - полтора!". (Замануха).  

-Первый. Три табло, три кнопки. После старта игры автомат/компьютер случайно (ну или "псевдослучайно") "распределяет шарик". Игрок делает выбор, нажимая кнопку. Загораются табло. Угадал - получи. Надеюсь, понятно.  

-Второй. Тоже самое. Но табло загораются не все сразу, а сначала "пустое" из невыбранных (для автомата нет проблем), затем остальные. Надеюсь, понятно.  

-Третий. Тоже, что и второй. Но после загорания первого "пустого" табло появляется транспорант "Вы можете в течении 10 сек изменить выбор". Но какой выпускник Бауманского будет дергаться - какой смысл?, тем более что кофе/выпивка за счет заведения. Ежели все же найдется кто, не знакомый с теорией vladb-Хартман, и вздумает изменить выбор, кнопки (временно) заблокированы (но я вам этого не говорил ). Через 10 секунд загораются остальные табло.  

Подумываю о четвертом автомате с сотней кнопок, но это потом...  

Вопрос - мои шансы "подняться" на этом деле? (Про рэкет я в курсе).  

Если ответ - "прогоришь", то просьба объяснить, чем отличаются с точки зрения доходности автоматы?

13219
Теньотцагамлета
31-03-2008
15:02:24

В Excel открываем Вид\Панель инструментов\Visual Basic  

Включаем конструктор - элементы управления. Создаём шесть объектов:  

1 - CommandButton1 – пуск программы  

2 - TextBox1 и TextBox2 – ввод количества игр и получение результата.  

3 - OptionButton1, OptionButton2 и OptionButton3 - не менять, поменять и случайный выбор.  

Дважды щёлкаем по CommandButton1 и в открывшееся окно кода копируем вот этот текст:  

 

Dim A, B, C As Integer 'Напёрстки  

Dim A1, B1, C1 As Integer 'Bыбор  

Dim A2, B2 As Integer 'Оставшиеся напёрстки  

Dim X As Integer 'Для случайных чисел  

Dim Won As Double 'Выигранные игры  

Dim Steps As Double 'Количество игр  

 

Private Sub CommandButton1_Click() ' Пуск программы  

 

Won = 0 ' Обнулить счетчик побед  

Steps = TextBox1.Text ' Загрузить количество игр  

Do While Steps > 0 ' Inner loop.  

Steps = Steps - 1 ' Increment Steps.  

'________________Обнуление ________  

A = 0: B = 0: C = 0: A1 = 0: B1 = 0: C1 = 0: A2 = 0: B2 = 0:  

'________________ заряжаем напёрсток шариком ________  

Randomize  

X = Int((3 * Rnd) + 1) 'Случайное число 1-2-3  

If X = 1 Then  

A = 1 'Шарик под напёрстком A  

ElseIf X = 2 Then  

B = 1 'Шарик под напёрстком B  

ElseIf X = 3 Then  

C = 1 'Шарик под напёрстком C  

End If  

'________________ выбираем один из трёх ________  

X = Int((3 * Rnd) + 1) 'Случайное число 1-2-3  

If X = 1 Then  

A1 = 1 'Выбран напёрсток A  

ElseIf X = 2 Then  

B1 = 1 'Выбран напёрсток B  

ElseIf X = 3 Then  

C1 = 1 'Выбран напёрсток C  

End If  

'___совмещаем выбранный напёрсток с содержимым_____  

If A1 = 1 Then 'Если выбран напёрсток A  

A2 = A 'то под A2 содержимое напёрстка A  

ElseIf B1 = 1 Then 'Если выбран напёрсток B  

A2 = B 'то под A2 содержимое напёрстка B  

ElseIf C1 = 1 Then 'Если выбран напёрсток C  

A2 = C 'то под A2 содержимое напёрстка C  

End If  

'__________убираем пустой напёрсток____________________  

If A2 = 0 Then 'Если шарика нет под выбранным напёрстком  

B2 = 1 ' то он под оставшимся  

End If  

'____________________делаем второй выбор_____________________  

If Abs(OptionButton1.Value) = 1 Then 'Не менять выбор  

Won = Won + A2  

End If  

If Abs(OptionButton2.Value) = 1 Then 'Поменять выбор  

Won = Won + B2  

End If  

If Abs(OptionButton3.Value) = 1 Then 'Случайный выбор  

X = Int((2 * Rnd) + 1) 'Случайное число 1-2  

If X = 1 Then  

Won = Won + A2 'Выбираем один из  

Else  

Won = Won + B2 'двух напёрстков  

End If  

End If  

Loop  

TextBox2.Text = Won 'Показать количество побед  

End Sub  

 

 

 

Возвращаемся в Excel, выключаем режим конструктора, и смотрим результат. Если он не совпадает с ожиданиями – ищем в тексте программы ошибку.  

13237 vladb
01-04-2008
11:37:01

Прошу извинить за молчание - подхватил дикий насморк (  

 

2 Теньотцагамлета:  

Как я и говорил, в программе нет "программистких" ошибок, только логические. Постараюсь это показать.  

Логика "хромает" здесь:  

 

'___совмещаем выбранный напёрсток с содержимым_____  

If A1 = 1 Then 'Если выбран напёрсток A  

A2 = A 'то под A2 содержимое напёрстка A  

ElseIf B1 = 1 Then 'Если выбран напёрсток B  

A2 = B 'то под A2 содержимое напёрстка B  

ElseIf C1 = 1 Then 'Если выбран напёрсток C  

A2 = C 'то под A2 содержимое напёрстка C  

End If  

'__________убираем пустой напёрсток____________________  

If A2 = 0 Then 'Если шарика нет под выбранным напёрстком  

B2 = 1 ' то он под оставшимся  

End If  

 

В чем можно убедиться двояко.  

 

1. Чуть поменяем:  

'__________убираем пустой напёрсток____________________  

If A2 = 1 Then 'Если шарик под выбранным напёрстком  

B2 = 0 ' то его нет под оставшимися  

End If  

 

Логика вроде бы та же и "железная": Если шарик под выбранным напёрстком  

то его нет под оставшимися  

Но результат неприятно удивляет ;-)  

 

Или, еще лучше, танцуем от "невыбранного" шарика:  

 

Dim A, B, C As Integer 'Напёрстки  

Dim A1, B1, C1, B4, C4 As Integer 'Bыбор  

Dim A2, B2 As Integer 'Оставшиеся напёрстки  

Dim X, y As Integer 'Для случайных чисел  

Dim Won As Double 'Выигранные игры  

Dim Steps As Double 'Количество игр  

 

Private Sub CommandButton1_Click() ' Пуск программы  

 

Won = 0 ' Обнулить счетчик побед  

Steps = TextBox1.Text ' Загрузить количество игр  

Do While Steps > 0 ' Inner loop.  

Steps = Steps - 1 ' Increment Steps.  

'________________Обнуление ________  

A = 0: B = 0: C = 0: A1 = 0: B1 = 0: C1 = 0: A2 = 0: B2 = 0:  

'________________ заряжаем напёрсток шариком ________  

Randomize  

X = Int((3 * Rnd) + 1) 'Случайное число 1-2-3  

If X = 1 Then  

A = 1 'Шарик под напёрстком A  

B = 0  

C = 0  

ElseIf X = 2 Then  

B = 1 'Шарик под напёрстком B  

A = 0  

C = 0  

ElseIf X = 3 Then  

C = 1 'Шарик под напёрстком C  

B = 0  

A = 0  

End If  

'________________ выбираем один из трёх ________  

X = Int((3 * Rnd) + 1) 'Случайное число 1-2-3  

If X = 1 Then  

A1 = 1 'Выбран напёрсток A  

ElseIf X = 2 Then  

B1 = 1 'Выбран напёрсток B  

ElseIf X = 3 Then  

C1 = 1 'Выбран напёрсток C  

End If  

'__________убираем пустой напёрсток____________________  

' ищем оставшийся невыбранный  

y = 1 'убрали или нет  

If A1 = 1 And B = 0 Then  

C4 = 1  

y = 0 ' убрали  

End If  

If A1 = 1 And C = 0 And y = 1 Then  

B4 = 1  

y = 0  

End If  

If B1 = 1 And A = 0 And y = 1 Then  

C4 = 1  

y = 0  

End If  

If B1 = 1 And C = 0 And y = 1 Then  

A4 = 1  

y = 0  

End If  

If C1 = 1 And A = 0 And y = 1 Then  

B4 = 1  

y = 0  

End If  

If C1 = 1 And B = 0 And y = 1 Then  

A4 = 1  

y = 0  

End If  

If A4 = 1 Then ' если остался неубранным A  

If A = 1 Then ' если шарик под ним  

A2 = 0  

B2 = 1  

Else  

A2 = 1  

B2 = 0  

End If  

End If  

If B4 = 1 Then  

If B = 1 Then  

A2 = 0  

B2 = 1  

Else  

A2 = 1  

B2 = 0  

End If  

End If  

If C4 = 1 Then  

If C = 1 Then  

A2 = 0  

B2 = 1  

Else  

A2 = 1  

B2 = 0  

End If  

End If  

'____________________делаем второй выбор_____________________  

If Abs(OptionButton1.Value) = 1 Then 'Не менять выбор  

Won = Won + A2  

End If  

If Abs(OptionButton2.Value) = 1 Then 'Поменять выбор  

Won = Won + B2  

End If  

If Abs(OptionButton3.Value) = 1 Then 'Случайный выбор  

X = Int((2 * Rnd) + 1) 'Случайное число 1-2  

If X = 1 Then  

Won = Won + A2 'Выбираем один из  

Else  

Won = Won + B2 'двух напёрстков  

End If  

End If  

Loop  

TextBox2.Text = Won 'Показать количество побед  

End Sub  

 

Результат - противоположный первоначальному.  

Что и доказывает, что правильная логика только по опции 3...

13239
Теньотцагамлета
01-04-2008
18:17:47

>>1. Чуть поменяем:  

>>'__________убираем пустой напёрсток____________________  

>>If A2 = 1 Then 'Если шарик под выбранным напёрстком  

>>B2 = 0 ' то его нет под оставшимися  

>>End If  

B2 в этот момент итак равно 0. Обнуляется в начале каждой игры. Но вот если и A2 окажется равно 0, то шарика не будет нигде. Его забрал ведущий. :-0  

Для сохранения условий, в этом случае нужно в начале игры не обнулять B2 а делать равным 1. И всё продолжает работать.  

 

>>Или, еще лучше, танцуем от "невыбранного" шарика:  

Можно и так. Разницы нет. Только добавте в блок обнуления вот это:  

A4 = 0: B4 = 0: C4 = 0:  

И всё продолжает работать правильно.

13240
Теньотцагамлета
01-04-2008
18:57:19

Зы. А можно упростить алгоритм ещё больше. Если игрок знает о неравенстве шансов, и всегда меняет выбор, то вероятных исходов всего 2.  

1. С вероятностью 1/3 игрок угадывает шарик с первого раза. Один из пустых напёрстков заберёт ведущий, а второй пустой достанется игроку при смене выбора. 100% проигрыш.  

2. С вероятностью 2/3 игрок в первом выборе берёт пустой напёрсток. Второй пустой заберёт ведущий, и при смене выбора игроку достанется шарик. 100% выигрыш.

13246
SergyBoiko
02-04-2008
11:20:34

Мдяя, VBA рулит.

13248 vladb
02-04-2008
11:42:06

>>Мдяя, VBA рулит.  

Бейсик-то рулит. Вот логика...  

 

>>B2 в этот момент итак равно 0. Обнуляется в начале каждой игры. Но вот если и A2 окажется равно 0, то шарика не будет нигде. Его забрал ведущий. :-0  

 

Вот это (действие ведущего) и не учитывается во всех вариантах.  

 

>>Можно и так. Разницы нет. Только добавте в блок обнуления вот это:  

A4 = 0: B4 = 0: C4 = 0:  

И всё продолжает работать правильно.  

 

И это есть тоже учет выбора двух наперстков вместо одного.  

 

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

 

1.Посмотрите еще раз на программы и ответьте на вопрос: можно ли по этим кодам различить выбор между показанным и оставшимся наперстком (вариант 1) и между  

показанным и двумя другими наперстками (если пустой не убирать - вариант 2)?  

Комментарии просьба не учитывать...  

Ответ - программа вариант 1==программа вариант 2.  

 

2. Посмотрите на коды:  

Randomize  

X = Int((3 * Rnd) + 1) 'Случайное число 1-2-3  

If X = 1 Then  

A = 1 'Шарик под напёрстком A  

B = 0  

C = 0  

ElseIf X = 2 Then  

B = 1 'Шарик под напёрстком B  

A = 0  

C = 0  

ElseIf X = 3 Then  

C = 1 'Шарик под напёрстком C  

B = 0  

A = 0  

End If  

 

Здесь шарик равномерно распределяется под три наперстка. А играют-то два!  

Т.е. при любом выбранном вероятность найти шарик _исходно_ в два раза меньше, чем не найти, убирай-не убирай пустой наперсток...  

 

3. Правильно должно быть: ведущий знает, что один из наперстков пустой и предназначен для убирания. Пусть это будет С. Тогда получим:  

Randomize  

X = Int((2 * Rnd) + 1) 'Случайное число 1-2  

If X = 1 Then  

A = 1 'Шарик под напёрстком A  

B = 0  

C = 0  

ElseIf X = 2 Then  

B = 1 'Шарик под напёрстком B  

A = 0  

C = 0  

End If  

 

И это будет верно, и из текста видно, что C пустой, убирается и не учитывается.  

Под наперсток для убирания ведущий шарик не положит.... ;-)

13250 vladb
02-04-2008
11:59:16

Подразумевается, что вероятности станут такими после убирания наперстка, так что их сразу можно и следует задавать такими.  

 

И еще - если ничего не менять и, допустим, убран А:  

 

If X = 1 Then  

A = 0 'Шарик под напёрстком A  

B = 0  

C = 0  

' Где шарик?  

ElseIf X = 2 Then  

B = 1 'Шарик под напёрстком B  

A = 0  

C = 0  

ElseIf X = 3 Then  

C = 1 'Шарик под напёрстком C  

B = 0  

A = 0  

End If  

13259
piters
02-04-2008
13:04:47

Насчет 13248. Очень похоже на выдергивание фразы из контекста. Шарик раскладывали под ТРИ наперстка, а ищут под ДВУМЯ.  

Убирается "НЕ С", а "В ИЛИ С", если выбран А. "Пустота" под одним из невыбранных шариков обыгрывается в алгоритмах.  

 

P.S. Комментарий к 13217 будет?

13261 vladb
02-04-2008
13:27:56

>>Шарик раскладывали под ТРИ наперстка, а ищут под ДВУМЯ.  

Золотые слова.  

Один убран. Ищем под двумя. А вероятности раскладываем под три - непорядок  

Раскладывание и поиск под тремя закончены после показа пустого наперстка. Теперь в работе только два. "В" ИЛИ "С" - неважно. Один ничем не лучше другого.  

 

>>P.S. Комментарий к 13217 будет?  

Пожалуйста. Не прогорите... Даже если позволите дважды игроку кнопку нажимать (за рычаг дергать) - на трех табло, потом на двух. В крайнем случае ничья будет...  

 

 

13262
piters
02-04-2008
13:54:46

"В крайнем случае ничья будет" - Ничьей не будет. Если "предположить невероятное" (Вашу правоту), и шансы на третьем автомате 50/50, то выплаты (полуторные) приведут к моему банкротству. Так что расцениваю Ваш ответ как отписку.  

А по сути, ситуация на третьем автомате НИЧЕМ не отличается от первого и второго. Игрок ничего не предпринимает (или ему "не дают") и вероятность его успеха ВСЕГДА равна 1/3 (или 33,3%, если это Вам больше нравится).  

А значит, если бы поменял решение ("дали"), то было 1-1/3=2/3 (или 66,7%).  

А "програмулины", Вы были правы, есть реализация заложенного алгоритма (правильного или не правильного).

13263 vladb
02-04-2008
14:01:17

>>"предположить невероятное"  

 

Это не невероятное. Это закон логики (или термодинамики, как хотите) - после уменьшения неопределенности (бардака) вероятности событий (энтропия) изменяются. Не я это придумал...

                            Смайлы                                                                    • Вернуться к списку тем •

Страница 1 ... 4 5 6 7 8 » 9 « 10 11

   
Новости


Реклама:

© AS 2009 St.Petersburg
  ??????.???????
ПравилаВопрос дняСтатистикаАрхив вопросовЧаВоСообщенияФорумКонкурс вопросовРегистрация