-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
e5b2c60
commit c8cb6b8
Showing
1 changed file
with
42 additions
and
16 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,21 +1,47 @@ | ||
body { | ||
font-family: Arial, sans-serif; | ||
} | ||
let entropyData = []; | ||
|
||
.container { | ||
max-width: 600px; | ||
margin: 0 auto; | ||
padding: 20px; | ||
} | ||
function calculateShannonEntropy() { | ||
const coinBias = parseFloat(document.getElementById("coin-bias").value); | ||
|
||
if (isNaN(coinBias) || coinBias < 0 || coinBias > 100) { | ||
document.getElementById("result").textContent = "Please enter a valid probability of 1 (between 0 and 100%)."; | ||
} else { | ||
// Check for duplicate entries | ||
const exists = entropyData.some(data => data.bias === coinBias); | ||
if (exists) { | ||
document.getElementById("result").textContent = "This value already exists in the table."; | ||
return; | ||
} | ||
|
||
const probabilityOfOne = coinBias / 100; | ||
const probabilityOfZero = 1 - probabilityOfOne; | ||
const shannonEntropy = -(probabilityOfOne * Math.log2(probabilityOfOne) + probabilityOfZero * Math.log2(probabilityOfZero)); | ||
const formattedEntropy = shannonEntropy.toLocaleString(undefined, { maximumFractionDigits: 4 }); | ||
|
||
entropyData.push({ bias: coinBias, entropy: shannonEntropy }); | ||
|
||
table { | ||
width: 100%; | ||
border-collapse: collapse; | ||
border: 1px solid #ddd; | ||
// Sort the table and update | ||
entropyData.sort((a, b) => b.entropy - a.entropy); | ||
updateTable(); | ||
|
||
document.getElementById("result").textContent = ""; // Clear any previous messages | ||
} | ||
} | ||
|
||
th, td { | ||
padding: 8px; | ||
text-align: left; | ||
border: 1px solid #ddd; | ||
function updateTable() { | ||
const tableBody = document.getElementById("entropy-table"); | ||
tableBody.innerHTML = ""; | ||
|
||
entropyData.forEach((data) => { | ||
const row = document.createElement("tr"); | ||
const biasCell = document.createElement("td"); | ||
const entropyCell = document.createElement("td"); | ||
|
||
biasCell.textContent = data.bias.toFixed(2) + "%"; | ||
entropyCell.textContent = data.entropy.toFixed(4); | ||
|
||
row.appendChild(biasCell); | ||
row.appendChild(entropyCell); | ||
tableBody.appendChild(row); | ||
}); | ||
} |