Регистрация не е нужна, освен при създаване на тема в "Задача на седмицата".

Генератор на рулетки

Генератор на рулетки

Мнениеот DekataBG » 23 Ное 2020, 21:04

Здравейте, комарджии. Опитвам се по някакъв тарикатски начин да изкарам някой лев и се натъкнах на едно видео - система за рулетка. Малко по-надолу ще прятя линка към него. Ще се опитам да обясня като цяло не как работи, а какъв е самият принцип на системата. Впрочем тя не е единствената, има и други подобни, те работят на същия принцип като тази. Та, значи, идеята е, че ако имаме безброй много пари, никога няма да загубим, защото винаги ще вдигаме залога, докато не спечелим. Но в реални условия това не работи, защото няма как да имаме безкрайно много пари, а и самите маси си имат лимит. Но ако спрем преди да сме загубили, то просто си тръгваме с печалбата. Тук идва моментът обаче - кога да спрем. Статистически може да се изчисли кога горе-долу да спрем, но на теория е едно, а на практика-друго. Та за това ми дойде идеята да направя симулация, която пуска Х игри с тази стратегия и да видя колко пари ще ми изкара, кога ще загубя, колко ще съм спечелил преди да загубя и като цяло да анализирам разни данни и да си направя сметката колко рисковано е да се играе. Аз се опитах да направя програма, която да използва тази стратегия, но не работи както очаквам. Ще пратя кода по-отдолу и се надявам някой или да го поредактира малко, или ако иска да предложи негово по-добро решение. Това е линкът със стратегията: https://www.youtube.com/watch?v=0aZxp2TVIW4&t=276s


Преди да ви пратя кода, ще кажа как очаквам да работи. Първо искам да въведа с какъв начален залог да играя и след това да въведа колко пари да вкарам в началото. Относно изхода, очаквам да ми показва какъв е текущият ми баланс на всеки ход (ред) [пример:ако започна с 400, на първия ред да се появи 399, защото този заложен 1 лев за момента е загубен, след това ако загубя да изпише 397, защото съм загубил този 1 и заложените 2, след това ако спечеля да изпише 404, защото съм заложил 3 и съм ги утроил.....и така нататък, докато тази сума не стане по-малка от 0, което би означавало да нямам пари, които да заложа], а накрая да изпише каква сума съм спечелил преди да изгубя всичките си пари и колко врътки съм направил.

Ето го и моя грешен код:

Код: Избери целия код

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace RouletteAdvancedStrategy
{
    class Program
    {
        static void Main(string[] args)
        {
            //sets the initial bet
            Console.Write("The initial bet is:");
            double initialBet = double.Parse(Console.ReadLine());

            //when to keep and stop playing
            bool winning = true;

           

            //the total profit and the profit
            double totalProfit=0, profit=0;

            //sets the initial money deposited
            Console.Write("Deposited money:");
            double deposit = double.Parse(Console.ReadLine());
            double currentMoney = deposit;

            //the bet
            double bet = initialBet;
           
            //counts the games
            int ctr = 0;

            //the mini-turns (1-14)
            int miniTurn = 1;

            //the cycle for the games
            while (winning = true)
            {
                //generates the random number
                Random r = new Random();
                int rInt = r.Next(0, 36);

                currentMoney = currentMoney - bet;
                Console.WriteLine("Current money:" + currentMoney );

                //checks if the number is between 1-12
                if (rInt <= 12 & rInt >= 1)
                {
                    profit = bet * 3;
                    currentMoney = currentMoney + profit;
                    bet = initialBet;
                    totalProfit = totalProfit + profit;
                    //the mini-turns (1-14)
                    miniTurn = 1;
                }
                else
                {
                    switch(miniTurn)
                    {
                        case 1:
                        case 2:
                        case 3:
                            miniTurn++;
                            bet++;
                            break;
                        case 4:
                            miniTurn++;
                            bet += 2;
                            break;
                        case 5:
                            miniTurn++;
                            bet += 3;
                            break;
                        case 6:
                            miniTurn++;
                            bet += 5;
                            break;
                        case 7:
                            miniTurn++;
                            bet += 7;
                            break;
                        case 8:
                            miniTurn++;
                            bet += 11;
                            break;
                        case 9:
                            miniTurn++;
                            bet += 16;
                            break;
                        case 10:
                            miniTurn++;
                            bet += 24;
                            break;
                        case 11:
                            miniTurn++;
                            bet += 36;
                            break;
                        case 12:
                            miniTurn++;
                            bet += 55;
                            break;
                        case 13:
                            miniTurn++;
                            bet += 82;
                            break;
                        default:
                            bet = bet * 2;
                            break;
                    }
                }
                if (currentMoney < 0) winning = false;
                ctr++;

            }
            Console.WriteLine("-----------");
            Console.WriteLine("You have played {0} number of games and won {1} total profit", ctr, totalProfit);
        }
    }
}



Реално не бих казал, че задачата е много трудна, по-скоро е трудоемка и се изисква някаква логика. Аз не мога да си намеря грешката. Ще търся още и ако намеря нещо ще го добавя. Знам, че си е бая работа, но ще се радвам ако някой удари едно рамо. А и самите вие може да се възползвате от тази стратегия, ако излязат благоприятни резултати!
DekataBG
Нов
 
Мнения: 37
Регистриран на: 02 Юли 2018, 14:42
Рейтинг: 15

Re: Генератор на рулетки

Мнениеот Добромир Глухаров » 23 Ное 2020, 21:50

Засега намерих грешка на този ред: while (winning == true) - операторът не трябва да бъде присвояване, а сравнение, иначе цикълът става infinite
Аватар
Добромир Глухаров
Математик
 
Мнения: 2080
Регистриран на: 11 Яну 2010, 13:23
Рейтинг: 2178

Re: Генератор на рулетки

Мнениеот DekataBG » 23 Ное 2020, 22:00

Ама разбира се...Сега някои неща се оправиха, например, чр програмата не върви до безкрайност. Но още има някакви грешки
DekataBG
Нов
 
Мнения: 37
Регистриран на: 02 Юли 2018, 14:42
Рейтинг: 15

Re: Генератор на рулетки

Мнениеот DekataBG » 23 Ное 2020, 22:04

По някаква причина генерираните рандом числа се повтарят в цикъла. Пробвах да ги инициализирам в изхода и видях, че излизат едни и същи
DekataBG
Нов
 
Мнения: 37
Регистриран на: 02 Юли 2018, 14:42
Рейтинг: 15

Re: Генератор на рулетки

Мнениеот peyo » 24 Ное 2020, 06:51

DekataBG написа:По някаква причина генерираните рандом числа се повтарят в цикъла. Пробвах да ги инициализирам в изхода и видях, че излизат едни и същи


Защото "In .NET Framework, the default seed value is time-dependent". Изкарай "Random r = new Random();" преди цикъла.

Не че ще ти помогне както поетично си се изразил "по някакъв тарикатски начин да изкарам някой лев" . Видеото което си намерил е обикновена измама, направено с цел да праща шарани към 3-те online casino сайта в description-a като referrals и човека печели процент от новите клиенти които праща на казиното.

Но иначе като упражнение по програмиране е много добра задача.
peyo
Математик
 
Мнения: 1768
Регистриран на: 16 Мар 2019, 09:35
Местоположение: София
Рейтинг: 664

Re: Генератор на рулетки

Мнениеот DekataBG » 24 Ное 2020, 08:06

Ся изглежда, че работи
DekataBG
Нов
 
Мнения: 37
Регистриран на: 02 Юли 2018, 14:42
Рейтинг: 15

Re: Генератор на рулетки

Мнениеот Гост » 08 Май 2021, 02:41

махай го тва, щот форумът се напълни със спам
Гост
 

Re: Генератор на рулетки

Мнениеот Гост » 10 Юли 2021, 09:18

Tiq ot lomonosov bili umni be
Гост
 


Назад към C#, Java



Кой е на линия

Регистрирани потребители: Google [Bot]

Форум за математика(архив)