Theoretische Analyse von Algorithmen, die wahr oder falsch zurückgeben, basierend auf der Untersuchung gegebener Wahrscheinlichkeiten
P粉026665919
P粉026665919 2023-09-05 19:57:42
0
1
599
<p>Ich möchte eine Methode implementieren, die <code>true</code> mit einer Wahrscheinlichkeit von <code>n/m</code> zurückgibt. </p> <p>Zum Beispiel möchte ich <code>true</code> mit einer Wahrscheinlichkeit von 7/10000 erhalten. </p> <p>Um dies zu erreichen, erhalte ich zunächst eine zufällige Ganzzahl
P粉026665919
P粉026665919

Antworte allen(1)
P粉616383625

这不是你实现的方式。你的代码检查n是否小于7,这是正确的方式。

这个陈述是从哪里来的?你肯定可以测试这个前提...并看看它有多大可能性。

这是真的。

如何测试

你可以很容易地测试你的实现的分布情况。你可以反复调用这个函数并记录你得到的结果,然后看看它随时间的变化。在统计学中,样本的大小越大,结果越可靠。

这是一个代码片段,它不断执行goAtChance函数并记录调用的总次数和true结果的数量。每隔10毫秒,结果会在页面上更新,包括true数量与总数的比例。如果一切正常,这个比例随时间应该趋近于0.0007。

const getRandomIntUnderN = (n) => Math.floor(Math.random() * n);
const goAtChance = (n, m) => getRandomIntUnderN(m) < n; 

let [outTotal, outHits, outRatio] = document.querySelectorAll("span");

let hits = 0; // Number of results that are true
let total = 0; // Total number of results

requestAnimationFrame(function loop() {
   let deadline = performance.now() + 10;
   do {
     hits += goAtChance(7, 10000); // boolean coerces to 0 or 1
     total++;
   } while (performance.now() < deadline);
   // Show the accumulated results
   outTotal.textContent = total;
   outHits.textContent = hits;
   outRatio.textContent = (hits / total).toFixed(8);
   requestAnimationFrame(loop); // Allow screen to update and then continue
});
样本数:<span></span><br>
命中数:<span></span><br>
比例:<span></span>
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage