-
Notifications
You must be signed in to change notification settings - Fork 16
/
calculator.htm
103 lines (90 loc) · 4.48 KB
/
calculator.htm
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Lottery Calculator</title>
</head>
<body>
<h1>Lottery Calculator</h1>
<!-- Поле для ввода размера банка -->
<label for="bankSize">Bank Size:</label>
<input type="number" id="bankSize" value="100"><br><br>
<!-- Выпадающий список для выбора типа распределения -->
<label for="distributionType">Distribution Type:</label>
<select id="distributionType">
<option value="uniform">Uniform</option>
<option value="increasing">Increasing</option>
<option value="veryIncreasing">Very Increasing</option>
</select><br><br>
<!-- Контейнер для ввода призов -->
<div id="prizeInputs"></div>
<!-- Кнопка для запуска расчета -->
<button onclick="calculate()">Calculate</button>
<!-- Контейнер для отображения результатов -->
<div id="results"></div>
<script>
const prizeInputs = document.getElementById('prizeInputs');
const distributionType = document.getElementById('distributionType');
// Функция для генерации полей ввода призов
function generateInputs() {
prizeInputs.innerHTML = '';
for (let i = 1; i <= 6; i++) {
prizeInputs.innerHTML += `
<label for="prize${i}">Prize for ${i} ball(s):</label>
<input type="number" id="prize${i}" step="0.01"><br>
`;
}
}
// Генерация полей ввода при загрузке страницы
generateInputs();
// Обработчик изменения типа распределения
distributionType.addEventListener('change', function() {
const inputs = prizeInputs.getElementsByTagName('input');
if (this.value === 'uniform') {
// Установка равномерного распределения
for (let i = 0; i < inputs.length; i++) {
inputs[i].value = (1 / 6).toFixed(2);
}
} else if (this.value === 'increasing') {
// Установка увеличивающегося распределения
for (let i = 0; i < inputs.length; i++) {
inputs[i].value = ((i + 1) / 21).toFixed(2);
}
} else if (this.value === 'veryIncreasing') {
// Установка сильно увеличивающегося распределения
inputs[0].value = '0.00';
for (let i = 1; i < inputs.length; i++) {
inputs[i].value = (Math.pow(2, i) / 62).toFixed(2);
}
}
});
// Функция для расчета результатов
function calculate() {
const bankSize = parseFloat(document.getElementById('bankSize').value);
const prizes = [];
for (let i = 1; i <= 6; i++) {
prizes.push(parseFloat(document.getElementById(`prize${i}`).value));
}
const probability = 0.1;
let expectedWin = 0;
let maxWin = 0;
// Расчет ожидаемого выигрыша и максимального возможного выигрыша
for (let i = 0; i < 6; i++) {
const win = bankSize * prizes[i];
const chance = Math.pow(probability, i + 1);
expectedWin += win * chance;
if (win > maxWin) maxWin = win;
}
// Отображение результатов
const results = document.getElementById('results');
results.innerHTML = `
<p>Maximum possible win: ${maxWin.toFixed(2)} tokens</p>
<p>Expected win: ${expectedWin.toFixed(2)} tokens</p>
<p>Therefore, the recommended ticket price should be no less than ${expectedWin.toFixed(2)} tokens.</p>
<p>AD Slogan for your lottery: buy a ticket for ${expectedWin.toFixed(2)} token(s)) and win up to ${maxWin.toFixed(2)} tokens!💃💃💃</p>
`;
}
</script>
</body>
</html>