Untitled

Run Settings
LanguageTypeScript
Language Version
Run Command
function vrf() { return Math.random(); } const blockCount = 1000000; const pools = [10, 20, 30, 40, 10, 15, 20]; const total = pools.reduce((a, n) => a + n, 0); const average_slots_between_blocks = 20; console.log("VRF w/frequency: ") let pool_count = [ 0, 0, 0, 0, 0, 0, 0]; let num_battles = 0; let prev = 0; let total_gap = 0; let sum_gap_sq = 0; let gap_count = 0; for (let i = 0; i < blockCount; i++) { for (let j = 0; j < pools.length; j++) { if (vrf() < (1 / average_slots_between_blocks) * pools[j] / total) { pool_count[j] += 1; // console.log("pool", j, "produced a block at slot", i, "(gap:", i - prev, ")") if (prev !== i) { gap_count += 1; total_gap += i - prev; sum_gap_sq += (i - prev) * (i - prev); prev = i; } else { num_battles += 1; } } } } let avg = total_gap / gap_count; console.log("Average gap: ", total_gap / gap_count); console.log("Gap variance:", sum_gap_sq / gap_count - (avg * avg)); let pool_total = pool_count.reduce((t, n) => t + n, 0); console.log("Average count: ", pool_total / pool_count.length); console.log("Battle Frequency: ", num_battles / gap_count); console.log("VRF w/o frequency:") pool_count = [ 0, 0, 0, 0, 0, 0, 0]; num_battles = 0; prev = 0; total_gap = 0; sum_gap_sq = 0; gap_count = 0; for (let i = 0; i < blockCount; i++) { if (i % average_slots_between_blocks !== 0) { continue; } for (let j = 0; j < pools.length; j++) { if (vrf() < pools[j] / total) { pool_count[j] += 1; // console.log("pool", j, "produced a block at slot", i, "(gap:", i - prev, ")") if (prev != i) { gap_count += 1; total_gap += i - prev; sum_gap_sq += (i - prev) * (i - prev); prev = i; } else { num_battles += 1; } } } } avg = total_gap / gap_count; console.log("Average gap: ", total_gap / gap_count); console.log("Gap variance:", sum_gap_sq / gap_count - (avg * avg)); pool_total = pool_count.reduce((t, n) => t + n, 0); console.log("Average count: ", pool_total / pool_count.length); console.log("Battle Frequency: ", num_battles / gap_count);
Editor Settings
Theme
Key bindings
Full width
Lines