JSFiddle - React, Tailwind, and code Playground

by Vladimir

HTML

<div id="chartContainer" style=""></div>
x - кол-во игр, y - баланс на счету
<div id="chartContainer2"></div>
x - кол-во игр, y - баланс на счету
<div id="chartContainer3"></div>
x - кол-во игр, y - баланс на счету
<div id="chartContainer4"></div>
x - кол-во игр, y - баланс на счету
<script src="https://canvasjs.com/assets/script/canvasjs.min.js"></script>

CSS

div {
  height: 370px; 
  width: 100%;
}

JavaScript

function martin(params) {
  // Функция для создания графика на основе данных
  function create_line(data, chart_block, title) {
    var chart = new CanvasJS.Chart(chart_block, {
      animationEnabled: true,
      theme: "light2",
      title:{
        text: title
      },
      axisY:{
        includeZero: false
      },
      data: [{        
        type: "line",       
        dataPoints: data
      }]
    });
    chart.render();
  }
  // Вероятность победы. Выражается в числе процентов. 
  var probability = params['probability'];
  // Баланс на счету
  var cash = params['start_cash'];
  // Умножитель. Ставим 1, получаем 1*умножитель
  var multiple = params['multiple'];
  // Текущий шаг мартингейла
  var cur_dep = 1;
  // Количество игр
  var count_games = params['count_games'];
  // Логируем историю баланса для вывода на график
  var history = [];
  // Имитируем игру
  for(var i = 0; i < count_games; i++) {
  	// Случайное число от 1 до 100 (включительно)
    var r = Math.floor(Math.random() * 100) + 1
    // Если случайное число попадает в диапазон числа вероятности, то мы проиграли
    if(r > probability) {
      cash -= cur_dep; // Вычитиваем из баланса
      cur_dep *= 2; // Увеличиваем шаг мартингейла
    } else {
      cash += cur_dep*multiple; // Победа! Добавляем в баланс
      cur_dep = 1; // Сбрасываем шаг мартингейла
    }
    history.push({y: cash}); // Запечатлим
  }
	// Рисуем график
  create_line(history, params['chart_block'], params['title']);
}

martin({
	probability: 50,
  start_cash: 100, 
  multiple: 1, 
  count_games: 1000, 
  chart_block: "chartContainer",
  title: 'Мартингейл при вероятности 0.5 и коэффициенте 1, на 1000 игр. - такого рулетки вам не дадут'
});

martin({
	probability: 50,
  start_cash: 100, 
  multiple: 0.95, 
  count_games: 1000, 
  chart_block: "chartContainer2",
  title: 'Мартингейл при вероятности 0.5 и коэффициенте 0.9, на 1000 игр'
});

martin({
	probability: 48,
  start_cash: 100, 
  multiple: 1, 
  count_games:...