亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

計算隨機數出現的百分比

計算隨機數出現的百分比

翻閱古今 2022-12-29 16:04:02
我正在研究分配問題。例如:我要調用一個函數,這個函數應該觸發第二個函數。第二個功能可以是 3(三)個選項之一。我想要:函數 A 應該有 10% 的時間被調用 函數 B 應該有 20% 的時間被調用 函數 C 應該有 70% 的時間被調用有 2 個選項 (70%-30%),很容易。我生成一個隨機整數 Math.round(Math.random()*100),然后檢查結果是否 < 30。結果 < 30 轉到一個函數,其余的轉到另一個函數,它平衡到 70/30。但是,當涉及到有兩個以上的選項時,我遇到了邏輯問題。這是大綱: //Initialize variablesvar twentyPercentCount = 0;var seventyPercentCount = 0;var tenPercentCount = 0;//Iterate 10,000 timesfor (var i = 0; i < 10000; i++) {  // generate whole integer 0-99   // logic}console.log("number of times value is < 20:  " + twentyPercentCount);console.log("number of times value is < 70:  " + seventyPercentCount);console.log("remaining ten percent range:  " + tenPercentCount);我目前正在嘗試的是:var twentyPercentCount = 0;    var seventyPercentCount = 0;    var tenPercentCount = 0;    var distributionArray = [10, 20, 100];    for (var i = 0; i < 10000; i++) {      var rnd = Math.round(Math.random() * 100);      // find first element > the random number      let chosenNum = distributionArray.find((element) => element >= rnd);      if (chosenNum == 100) {        seventyPercentCount += 1;      } else if (chosenNum == 20) {        twentyPercentCount += 1;      } else {        tenPercentCount += 1;      }    }    console.log("number of values less than 10:  " + twentyPercentCount);    console.log("number of values less than 20:  " + twentyPercentCount);    console.log("70 percent range:  " + seventyPercentCount);結果**number of values less than 10:  943number of values less than 20:  94370 percent range:  8025**問題是 10% 和 20% 的桶仍然相等。我知道這是我的邏輯缺陷,但無法克服。
查看完整描述

1 回答

?
開心每一天1111

TA貢獻1836條經驗 獲得超13個贊

你可以把想要的分布的總和


[10, 20,  70] // distribution

[10, 30, 100] // totals

并檢查隨機值。


const

    distribution = [10, 20, 70],

    totals = distribution.map((s => v => s += v)(0));

    count = [0, 0, 0];


for (var i = 0; i < 10000; i++) {

  const

      rnd = Math.random() * 100,

      chosenNum = totals.findIndex(element => rnd < element);


  count[chosenNum]++;      

}


console.log(count);


查看完整回答
反對 回復 2022-12-29
  • 1 回答
  • 0 關注
  • 126 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號