我正在研究分配問題。例如:我要調用一個函數,這個函數應該觸發第二個函數。第二個功能可以是 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% 的桶仍然相等。我知道這是我的邏輯缺陷,但無法克服。
計算隨機數出現的百分比
翻閱古今
2022-12-29 16:04:02