Widget:Wallet
<!DOCTYPE html> <html lang="zh-CN"> <head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>幻塔卡池模拟器</title>
<style>
.gacha-simulator {
font-family: Arial, sans-serif;
background-color: #2C3E50;
color: white;
padding: 20px;
border-radius: 10px;
width: 90%;
max-width: 600px;
margin: 20px auto;
text-align: center;
}
.gacha-simulator h1 {
font-size: 24px;
margin-bottom: 20px;
}
.gacha-simulator label {
display: block;
margin: 10px 0;
font-size: 16px;
}
.gacha-simulator input[type="number"],
.gacha-simulator select {
padding: 10px;
width: 80%;
max-width: 300px;
border: none;
border-radius: 5px;
background-color: #34495E;
color: white;
}
.gacha-simulator button {
padding: 10px 20px;
background-color: #3498DB;
color: white;
border: none;
border-radius: 5px;
cursor: pointer;
margin: 10px 0;
}
.gacha-simulator button:hover {
background-color: #2980B9;
}
.gacha-simulator .result {
margin-top: 20px;
font-size: 16px;
background-color: #34495E;
padding: 15px;
border-radius: 5px;
text-align: left;
}
.gacha-simulator .footer {
margin-top: 20px;
font-size: 14px;
color: #BDC3C7;
}
.gacha-simulator .footer a {
color: #3498DB;
text-decoration: none;
}
.gacha-simulator .footer a:hover {
text-decoration: underline;
}
</style>
</head> <body>
🌸 幻塔卡池模拟器 🌸
<label for="history">历史记录(最近3次):</label>
<select id="history">
<option value="">请选择历史记录</option>
<option value="中中歪">中中歪</option>
<option value="中歪中">中歪中</option>
<option value="中歪歪">中歪歪</option>
<option value="歪中中">歪中中</option>
<option value="歪中歪">歪中歪</option>
<option value="歪歪中">歪歪中</option>
</select>
<label for="pulls">赤核数量:</label>
<input id="pulls" type="number" placeholder="请输入你拥有的赤核数量">
<label for="target">目标星级:</label>
<select id="target">
<option value="0">0星</option>
<option value="1">1星</option>
<option value="2">2星</option>
<option value="3">3星</option>
<option value="4">4星</option>
<option value="5">5星</option>
<option value="6">6星</option>
</select>
<button onclick="simulate()">开始模拟</button>
<script>
function parseHistory(historyStr) {
const validChars = [...historyStr].filter(c => c === '中' || c === '歪').slice(-3);
const state = { consecLimited: 0, consecStandard: 0 };
for (const char of validChars.reverse()) {
if (char === '中') {
state.consecLimited++;
state.consecStandard = 0;
} else if (char === '歪') {
state.consecStandard++;
state.consecLimited = 0;
}
}
return state;
}
function simulateGacha(pulls, initState) {
let currentState = { ...initState };
let limitedCount = 0;
let pityCounter = 0; // 保底计数器
for (let i = 0; i < pulls; i++) {
pityCounter++;
let isTarget = false;
if (pityCounter >= 80) {
isTarget = Math.random() < 0.5;
pityCounter = 0;
} else {
const isHit = Math.random() < 0.0075;
if (isHit) {
if (currentState.consecStandard >= 2) {
isTarget = true;
currentState.consecStandard = 0;
currentState.consecLimited = 1;
} else {
isTarget = Math.random() < 0.5;
}
}
}
if (isTarget) {
limitedCount++;
currentState.consecLimited++;
currentState.consecStandard = 0;
} else {
currentState.consecStandard++;
currentState.consecLimited = 0;
}
}
return limitedCount;
}
function calculateCoinExchange(totalPulls) {
return Math.floor(totalPulls / 110);
}
function calculateSuccessRate(pulls, target, coinExchange, historyState) {
let success = 0;
for (let i = 0; i < 1000; i++) {
const limitedCount = simulateGacha(pulls, historyState);
if (limitedCount + coinExchange >= target) {
success += 1;
}
}
return success / 1000;
}
function recommendTarget(totalPulls, targetStar, coinExchange, historyState) {
const starToPulls = { 0: 1, 1: 2, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7 };
const targetPulls = starToPulls[targetStar];
const successRate = calculateSuccessRate(totalPulls, targetPulls, coinExchange, historyState);
let recommendation = `当前目标:${targetStar} 星(需抽 ${targetPulls} 把,综合成功率:${(successRate * 100).toFixed(1)}%)`;
if (successRate < 0.5) {
let lowerTarget = targetStar - 1;
while (lowerTarget >= 0) {
// 跳过 2 星和 4 星
if (lowerTarget === 2 || lowerTarget === 4) {
lowerTarget--;
continue;
}
const lowerSuccessRate = calculateSuccessRate(totalPulls, starToPulls[lowerTarget], coinExchange, historyState);
if (lowerSuccessRate >= 0.5) {
recommendation += `
建议降档目标:${lowerTarget} 星(需抽 ${starToPulls[lowerTarget]} 把,成功率:${(lowerSuccessRate * 100).toFixed(1)}%)`;
break;
}
lowerTarget--;
}
}
return recommendation;
}
function simulate() {
const history = document.getElementById('history').value;
const pulls = parseInt(document.getElementById('pulls').value);
const targetStar = parseInt(document.getElementById('target').value);
if (!history || isNaN(pulls) || isNaN(targetStar)) {
alert("请输入完整信息!");
return;
}
const historyState = parseHistory(history);
const coinExchange = calculateCoinExchange(pulls);
const newLimited = simulateGacha(pulls, historyState);
const recommendation = recommendTarget(pulls, targetStar, coinExchange, historyState);
document.getElementById('result').innerHTML = `
铸币可兑换限定:${coinExchange}个
预计新增限定:${newLimited} ± 1个
${recommendation}
`;
}
</script>
</body> </html>

沪公网安备 31011002002714 号