国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

對返回真或假的算法進(jìn)行理論分析,基于給定概率的研究
P粉026665919
P粉026665919 2023-09-05 19:57:42
0
1
709
<p>我想實現(xiàn)一個方法,以 <code>n/m</code> 的概率返回 <code>true</code>,以 <code>(m-n)/m</code> 的概率返回 <code>false</code>。</p> <p>例如,我想以 7/10000 的概率獲得 <code>true</code>。</p> <p>為了實現(xiàn)這個目標(biāo),我首先從函數(shù) <code>getRandomIntUnderN</code> 中獲取一個小于 10000 的隨機(jī)整數(shù) <code>n</code>。然后,我判斷 <code>n</code> 是否小于 (7+1),如果是,則返回 <code>true</code>,否則返回 <code>false</code>。</p> <p>下面是我的實現(xiàn):</p> <p> <pre class="brush:js;toolbar:false;">// 0 is included while n is not const getRandomIntUnderN = (n) => { const rn = Math.random() * n return Math.trunc(rn) } // the opportunity of a truthy return value is n/m const goAtChance = (n, m) => { return getRandomIntUnderN(m) < n } // a opportunity of 7‰ to return true console.log(goAtChance(7, 10000))</pre> </p> <p>我的問題是:我只判斷 <code>n</code> 是否小于 (7+1) 來達(dá)到預(yù)期的完美概率,這樣可以嗎?</p> <p>一方面,從 1 到 7 的數(shù)字在 1 到 10000 的范圍內(nèi)不夠離散分布:似乎存在一種偏差,使得返回真值的可能性較小。</p> <p>另一方面,由于我可以從 <code>getRandomIntUnderN</code> 中獲取一個純隨機(jī)數(shù),因此概率不會受到我選擇哪些數(shù)字來確定返回值的影響。它可以是 [1,2,3,4,5,6,7],[21,22,23,24,25,26,27],[23,55,3,66,762,92,123] 或任何小于 10000 的數(shù)字。</p> <p>那么,哪種觀點是正確的呢?</p>
P粉026665919
P粉026665919

全部回復(fù)(1)
P粉616383625

這不是你實現(xiàn)的方式。你的代碼檢查n是否小于7,這是正確的方式。

這個陳述是從哪里來的?你肯定可以測試這個前提...并看看它有多大可能性。

這是真的。

如何測試

你可以很容易地測試你的實現(xiàn)的分布情況。你可以反復(fù)調(diào)用這個函數(shù)并記錄你得到的結(jié)果,然后看看它隨時間的變化。在統(tǒng)計學(xué)中,樣本的大小越大,結(jié)果越可靠。

這是一個代碼片段,它不斷執(zhí)行goAtChance函數(shù)并記錄調(diào)用的總次數(shù)和true結(jié)果的數(shù)量。每隔10毫秒,結(jié)果會在頁面上更新,包括true數(shù)量與總數(shù)的比例。如果一切正常,這個比例隨時間應(yīng)該趨近于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
});
樣本數(shù):<span></span><br>
命中數(shù):<span></span><br>
比例:<span></span>
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板