64 / 54 / 10
Регистрация: 30.06.2020
Сообщений: 594
1

Сыграем в монетку

28.01.2022, 22:23. Показов 875. Ответов 13

Предлагаю сыграть в монетку. В монетке статистически 50\50 и при условии, что выигрыш от проигрыша больше в два раза - ставя только на орла или решку - будем в плюсе. А если процент угадываний уменьшить до 10 при том же соотношении выигрыша к проигрышу? Или что будет, если процент уменьшить и изменить соотношение проигрыша к выигрышу?

Предлагаю размять мозги простой задачей и потягаться в математике, вот вам скелет и три переменных, которые в рамках условий, можно менять, переменные reward, losing и coefficient.

Есть три номинации для борьбы:
1) Итоговый баланс не ниже стартового - момент борьбы понизить максимально процент победных выпадений
2) Итоговый баланс +100% от стартового без изменения reward и losing
3) Самый имбалансный - итоговый баланс не ниже стартового, процент победных = 5

Вот скелет
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <iostream>
using namespace std;
 
 
int main()
{
    int percentWin = 0;
    double balance = 1000;  
    double reward = 10;     // вот эти три 
    double losing = 5;      // параметра разрешается
    double coefficient = 1; // использовать для установки рекорда
    int countGames = 1000;
    int countWinDeals = 0;
 
    setlocale(NULL, "RU");
 
    cout << "Введите процентное соотношение выигрышных выпадений от 0 до 100\n";
    cin >> percentWin;
 
    countWinDeals = (double(countGames) / 100) * percentWin;
    cout << "countWinDeals = " << countWinDeals << endl;
 
    for (int i = 1; i <= countGames; i++)
    {
        if (countWinDeals != 0)
        {
            balance += reward*coefficient;
            countWinDeals--;
        }
        else
        {
            balance -= losing*coefficient;
        }
        cout << "Бросок " << i << " Баланс = " << balance << endl;
    }
 
 
    cout << "\nВаш итоговый баланс = " << balance << endl;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.01.2022, 22:23
Ответы с готовыми решениями:

А давайте сыграем?
Предлагаю вот что: каждый придумывает, что можно добавить полезного в код. Я вот закинул всё что...

Давайте сыграем
http://www.game4seo.com/ - игра для оптимизаторов. Те же скачки. Создаете сайт - выигрываете...

Сыграем в шахматы?
Предлагаю в этой теме сыграть со мной в шахматы. Остальные могут наблюдать и болеть) играем...

Подбрасываем монетку
Всем привет! Препод в универе на лекции как-то сказал, что мол в древности люди...

опять про монетку
как рассчитать, какова вероятность, что из 1000 подбрасываний монетки будет хотя бы одна серия из...

13
552 / 530 / 85
Регистрация: 29.05.2015
Сообщений: 3,446
29.01.2022, 07:56 2
Ничего не понял.
0
С чаем беда...
Эксперт CЭксперт С++
9982 / 5336 / 1459
Регистрация: 18.10.2014
Сообщений: 12,829
29.01.2022, 10:15 3
Цитата Сообщение от Laborant666 Посмотреть сообщение
for (int i = 1; i <= countGames; i++)
В чем смысл этого цикла, если финальный результат вычислим прямой формулой, без какого либо цикла вобще?
0
С чаем беда...
Эксперт CЭксперт С++
9982 / 5336 / 1459
Регистрация: 18.10.2014
Сообщений: 12,829
29.01.2022, 10:16 4
del
0
64 / 54 / 10
Регистрация: 30.06.2020
Сообщений: 594
29.01.2022, 12:26  [ТС] 5
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
В чем смысл этого цикла, если финальный результат вычислим прямой формулой, без какого либо цикла вобще?
А если ты захочешь 10 так, 10 так и 10 ещё по другому сделать условия? Тут не красота обсуждается
0
С чаем беда...
Эксперт CЭксперт С++
9982 / 5336 / 1459
Регистрация: 18.10.2014
Сообщений: 12,829
29.01.2022, 21:31 6
Цитата Сообщение от Laborant666 Посмотреть сообщение
А если ты захочешь 10 так, 10 так и 10 ещё по другому сделать условия? Тут не красота обсуждается
Не понимаю, о чем идет речь. Как бы оно ни было, вопрос остается тем же: зачем вычислять циклом то, что вычисляется элементарной прямой формулой?

Это примерно как заменять умножение a * 20 на цикл из 20 сложений. Зачем?

Что такое "10 так, 10 так и 10 ещё по другому" - не ясно, но сути это не меняет.
0
64 / 54 / 10
Регистрация: 30.06.2020
Сообщений: 594
30.01.2022, 09:59  [ТС] 7
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Что такое "10 так, 10 так и 10 ещё по другому" - не ясно, но сути это не меняет.
Ну захочешь ты 10 из нного количества выпадений поставить с другими коэффициентами, например, делать формулу отдельную под это?

Добавлено через 12 минут
TheCalligrapher,
Давай вот так тогда

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
 
int main()
{
    int percentWin = 0;
    double balance = 1000;
    double reward = 10;     // вот эти три 
    double losing = 5;      // параметра разрешается
    double coefficient = 1; // использовать для установки рекорда
    int countGames = 1000;
    int countWinDeals = 0;
    int number = 0;
 
    setlocale(NULL, "RU");
    srand(time(NULL));
 
    cout << "Введите процентное соотношение выигрышных выпадений от 0 до 100\n";
    cin >> percentWin;
 
    for (int i = 1; i <= countGames; i++)
    {
        number = (rand() % 100);
        if (number < percentWin)
        {
            balance += reward * coefficient;
            cout << "Бросок " << i << " Баланс = " << balance << " (+" << reward * coefficient << ")" << endl;
        }
        else
        {
            balance -= losing * coefficient;
            cout << "Бросок " << i << " Баланс = " << balance << " (-" << losing*coefficient << ")" << endl;
        } 
    }
    cout << "\nВаш итоговый баланс = " << balance << endl;
}
Добавлено через 3 минуты
Цитата Сообщение от alexu_007 Посмотреть сообщение
Ничего не понял.
Рекорд состоит в том, что бы обыграть монетку. У монетки 50 на 50 на длинной дистанции, что можно задать в программе. И вот предлагаю - А) Достичь наименьшего процента успешных выпадений, что бы конечный баланс был не ниже стартового Б)Баланс +100% от стартового, без изменения reward и losing, то есть играясь коэффициентом В) Процент победных выпадений ставим в 5, и любыми комбинациями и значениями трёх переменных не просадить баланс ниже стартового (в итоговой цифре)

Как проще объяснить даже не знаю
0
С чаем беда...
Эксперт CЭксперт С++
9982 / 5336 / 1459
Регистрация: 18.10.2014
Сообщений: 12,829
30.01.2022, 10:47 8
Цитата Сообщение от Laborant666 Посмотреть сообщение
Давай вот так тогда
Это уже совсем другое, не имеющее ничего общего с оригиналом. В этом варианте в цикле вдруг появился rand().
0
552 / 530 / 85
Регистрация: 29.05.2015
Сообщений: 3,446
30.01.2022, 11:29 9
Цитата Сообщение от Laborant666 Посмотреть сообщение
Рекорд состоит в том, что бы обыграть монетку. У монетки 50 на 50 на длинной дистанции, что можно задать в программе. И вот предлагаю - А) Достичь наименьшего процента успешных выпадений
Какое выпадение считается успешным?

что бы конечный баланс был не ниже стартового Б)Баланс +100% от стартового, без изменения reward и losing, то есть играясь коэффициентом В)
Баланс чего?

Процент победных выпадений ставим в 5, и любыми комбинациями и значениями трёх переменных не просадить баланс ниже стартового (в итоговой цифре)
Монетка должна в 5% выпадать решкой и в 95% - орлом? Физически это сделать невозможно. Програмно можно всё что угодно (поэтому не стоит играть в онлайн казино).

Человеческими словами можете объяснить, как должна работать программа? Задаём с клавиатуры три переменные
reward = 10; double losing = 5; double coefficient = 1; Дальше какие действия? Имитируем подбрасывание монетки с помощью rand()? Что делаем с результатами подбрасывания и каким боком тут reward и coefficient?
0
64 / 54 / 10
Регистрация: 30.06.2020
Сообщений: 594
30.01.2022, 11:58  [ТС] 10
Цитата Сообщение от alexu_007 Посмотреть сообщение
Какое выпадение считается успешным?
В рамках кода - ставим всегда в одну сторону. В коде видно - выбрали процент, и рандомом (теперь) идёт от 0 до 100, попали в границу процента - успех. Аналогично монетке, если поставит 50% - будет половина орлов (попаданий) половина решек (мисы)

Добавлено через 24 секунды
Цитата Сообщение от alexu_007 Посмотреть сообщение
Баланс чего?
Баланс условной валюты, в коде он есть, опять же, для учета прогресса

Добавлено через 3 минуты
Цитата Сообщение от alexu_007 Посмотреть сообщение
Человеческими словами можете объяснить, как должна работать программа?
Ох ёлки)) Ну смотрите, для имитации одного эксперимента людям предлагали бросить монетку, угадали +10 долларов, не угадали -5, а потом спрашивали как быть в плюсе всегда? Ответ через 1000 бросков, ставя только на орла. В программе это имитируется. Но если имитировать не монетку, а систему, где не 50 на 50? Тут в ход идут изменения соотношений плюса к минусу, либо коэффициент. Коэфф работает аля мультипликатор, не угадали -5, что б отбить делаем коэфф 2, угадали получили +20 (reward * coefficient). Собственно этих трех переменных достаточно, что бы обыграть любой процент успешных попаданий. И вот тут я предлагаю посоревноваться

Добавлено через 1 минуту
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
В этом варианте в цикле вдруг появился rand()
Немного другое, согласен, но суть та же - выбираем процент успешных выпадений и они будут количественно равны и первому коду, но теперь не подряд, а в случайном порядке. Я прогонял первый и второй код, при 50% в первом 3500 итог, во втором 3400-3600, что позволимо, условия рекордов не меняются

Добавлено через 20 секунд
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Это уже совсем другое, не имеющее ничего общего с оригиналом
Вы же хотели потребность в цикле?) Я вам её дал

Добавлено через 1 минуту
Цитата Сообщение от alexu_007 Посмотреть сообщение
Задаём с клавиатуры три переменные
reward = 10; double losing = 5; double coefficient = 1;
Эти переменные изначально в коде. И в коде своей функцией их разрешается менять как вам угодно для достижения рекорда. От пользователя только ввод процента, что в прогоне должно быть константным

Добавлено через 1 минуту
Цитата Сообщение от alexu_007 Посмотреть сообщение
Монетка должна в 5% выпадать решкой и в 95% - орлом? Физически это сделать невозможно.
При 10 бросках возможно
0
552 / 530 / 85
Регистрация: 29.05.2015
Сообщений: 3,446
30.01.2022, 13:47 11
Не очень понимаю. Если за выигрыш +10, а за проигрыш -5 - человек всегда будет в плюсе.

1. Если подбрасывается монетка с вероятностью 50% - можно выиграть с любой тактикой, выбирая только орёл или только решку, или угадывая случайным образом - всё равно угадаешь в 50% случаев.

2. Если человек угадывает "от балды", т.е. случайно с вероятностью 50% - то неважно, как подбрасывается или падает монетка. Даже если у неё с 2-х сторон орёл - человек угадает в 50% случаев.
0
64 / 54 / 10
Регистрация: 30.06.2020
Сообщений: 594
30.01.2022, 20:57  [ТС] 12
Цитата Сообщение от alexu_007 Посмотреть сообщение
Если подбрасывается монетка с вероятностью 50% - можно выиграть с любой тактикой
Перечитайте условия одной из позиций рекорда - ПОНИЖЕНИЕ вероятности выпадения нашего орла. Монетка приведена просто в пример
0
552 / 530 / 85
Регистрация: 29.05.2015
Сообщений: 3,446
31.01.2022, 08:04 13
Не вижу разницы. Даже если всегда будет выпадать только орёл, при случайном угадывании (вероятность назвать орла или решку 50%) в половине случаев будет угадано верно.
0
64 / 54 / 10
Регистрация: 30.06.2020
Сообщений: 594
01.02.2022, 23:29  [ТС] 14
Цитата Сообщение от alexu_007 Посмотреть сообщение
Даже если всегда будет выпадать только орёл, при случайном угадывании (вероятность назвать орла или решку 50%) в половине случаев будет угадано верно
Я вам ещё раз говорю - один из пунктов рекорда - снизить процент орлов до минимума без ущерба балансу. С 50% пойти вниз..
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.02.2022, 23:29
Помогаю со студенческими работами здесь

Сыграем в крестики-нолики?
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; int main() { char r; int t1, t2; int c1; int...

Пишите ники в WOT, сыграем!
Воббщем извините,если повторяюсь.Пишите ники,потренимся вместе. Я nanshakov.Желательно написать...

Задача теория вероятностей на несимметричную монетку
Хелло всем. Хочу запрогать задачку и покрутить, посмотреть результаты для разных параметров. Сам...

Как заработать легально монетку на HotSpots?
Можно ли брать плату за бесплатный интернет в виде оплаты за обслуживание сети? Либо как...

Сколько раз минимум следует подкинуть монетку, чтобы минимум с вероятностью 0,975 утверждать, что .теорема муавра-лапласа
Сколько раз минимум следует подкинуть монетку, чтобы минимум с вероятностью 0,975 утверждать, что...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru