最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于JavaScript偽隨機正態(tài)分布代碼實例

 更新時間:2019年11月07日 16:26:20   作者:李瀟然  
這篇文章主要介紹了基于JavaScript偽隨機正態(tài)分布代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

這篇文章主要介紹了基于JavaScript偽隨機正態(tài)分布代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

在游戲開發(fā)中經(jīng)常遇到隨機獎勵的情況,一般會采取先生成數(shù)組,再一個一個取的方式發(fā)隨機獎勵。

下面是js測試正態(tài)分布代碼:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title></title>
</head>
<body>
<canvas id="myCanvas" width="800" height="400" style="border:1px solid #c3c3c3;">
  Your browser does not support the canvas element.
</canvas>
<canvas id="myCanvas2" width="800" height="400" style="border:1px solid #c3c3c3;">
  Your browser does not support the canvas element.
</canvas>
<textarea id="text" cols="200" rows="5000"></textarea>
<script type="text/javascript">

  var timesArr = [];
  var timesArrObj = {};
  window.onload = function () {
//    for (var meter = 0; meter < 800; meter++) {
//      var times = getNumberInNormalDistribution(20, 7);
//      addPoint(times, meter);
//      timesArr.push(Math.floor(times));
//    }
//    drawGreenTab(timesArr,1);
    // drawLine(0, 380, 800, 380);
    drawResult(1);
    drawResult(2);
    drawResult(0);
    drawGreenTab(timesArrObj[1], 1);
    drawGreenTab(timesArrObj[2], 2);
    drawGreenTab(timesArrObj[0], 0);

  }
  //制作綠色柱狀圖表
  function drawGreenTab(timesArr, color) {
    var timesTypes = {};
    for (var i in timesArr) {
      var times = timesArr[i];
      if (timesTypes[times] == null) {
        timesTypes[times] = 0;
      } else {
        timesTypes[times] = timesTypes[times] + 1;
      }
    }
    for (var i in timesTypes) {
      drawRect(i, timesTypes[i], 4, color);
    }
  }
  //畫圓點
  function addPoint(y, x, color) {
    y = 400 - y;
    var c = document.getElementById("myCanvas");
    var cxt = c.getContext("2d");
    if (color == null) {
      cxt.fillStyle = "#FF0000";
    } else {
      cxt.fillStyle = color;
    }
    cxt.beginPath();
    cxt.arc(x, y, 2, 0, Math.PI * 2, true);
    cxt.closePath();
    cxt.fill();
  }
  var meter = 0;
  //劃線
  function drawLine(beginx, beginy, endx, endy) {
    var c = document.getElementById("myCanvas");
    var cxt = c.getContext("2d");
    cxt.moveTo(beginx, beginy);
    cxt.lineTo(endx, endy);
    cxt.stroke();
  }
  //模擬正態(tài)分布取值
  function getNumberInNormalDistribution(mean, std_dev) {
    return mean + (uniform2NormalDistribution() * std_dev);
  }
  //模擬正態(tài)分布偏差
  function uniform2NormalDistribution() {
    var sum = 0.0;
    for (var i = 0; i < 12; i++) {
      sum = sum + Math.random();
    }
    return sum - 6;
  }
  //畫一個長方形
  function drawRect(x, y, width, index) {
    var color = "#FF0000";
    if (index == 1) {
      color = "#00FF00";
    } else if (index == 2) {
      color = "#0000FF";
    }
    var c = document.getElementById("myCanvas2");
    var cxt = c.getContext("2d");
    cxt.fillStyle = color;
    cxt.fillRect(x * width + index * 200, 400 - y, width - 2, y);
  }
  //畫出生成的圖像
  function drawResult(index) {
    var color = "#FF0000";
    if (index % 3 == 1) {
      color = "#00FF00";
    } else if (index % 3 == 2) {
      color = "#0000FF";
    }
    var result = generateList();
    var resultStr = "";
//    for (var i in result) {
//      resultStr = resultStr + result[i] + "\n";
//    }
    //document.getElementById("text").value = resultStr;
    var resulttimes = {};
    for (var i in result) {
      if (resulttimes[result[i]] == null) {
        resulttimes[result[i]] = 1;
      } else {
        resulttimes[result[i]] = resulttimes[result[i]] + 1;
      }
    }
    for (var i in resulttimes) {
      resultStr = resultStr + resulttimes[i] + "\n";
    }
    document.getElementById("text").value = resultStr;
    var timeslist = [];
    var times = 1;
    for (var i in result) {
      if (result[i] == index) {
        addPoint(times, i / 5, color);
        if (timesArrObj[index] == null) {
          timesArrObj[index] = [];
        }
        timesArrObj[index].push(times);
        times = 0;
      } else {
        times++;
      }
    }
  }
  //權(quán)重數(shù)組
  var wt = [105, 216, 316, 488, 1000, 2000, 3680, 5890];//,14770,71535
  //生成結(jié)果數(shù)組函數(shù),結(jié)果為權(quán)重數(shù)組的索引,從0開始
  function generateList() {
    //生成的結(jié)果數(shù)組長度
    var n = 50000;
    var wtp = [];
    var sum = 0;
    for (var i in wt) {
      sum = sum + wt[i];
    }
    for (var i in wt) {
      wtp.push(wt[i] / sum);
    }
    var result = [];
    var p = [];
    for (var i in wtp) {
      var inp = getNumberInNormalDistribution(1 / wtp[i], 1 / wtp[i] / 3);
      p.push(inp);
    }
    for (var i = 0; i < n; i++) {
      var minp = 99999999;
      var minj = -1;
      for (var j in p) {
        if (p[j] < minp) {
          minp = p[j];
          minj = j;
        }
      }
      result.push(minj);
      for (var j in p) {
        p[j] = p[j] - minp;
      }
      p[minj] = getNumberInNormalDistribution(1 / wtp[minj], 1 / wtp[minj] / 3);
    }
    return result;
  }
</script>
</body>
</html>

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 前端使用xlsx導出數(shù)據(jù)生成Excel文件的全過程

    前端使用xlsx導出數(shù)據(jù)生成Excel文件的全過程

    這篇文章主要給大家介紹了關(guān)于前端使用xlsx導出數(shù)據(jù)生成Excel文件的相關(guān)資料,最近在做項目中,后端偷懶不做導出功能,讓我前端實現(xiàn),所以在這里記錄下前端導出功能,需要的朋友可以參考下
    2023-08-08
  • js獲取元素相對窗口位置的實現(xiàn)代碼

    js獲取元素相對窗口位置的實現(xiàn)代碼

    這篇文章主要介紹了js獲取元素相對窗口位置的實現(xiàn)代碼,需要的朋友可以參考下
    2014-09-09
  • 微信小程序?qū)崿F(xiàn)下拉刷新和上拉分頁效果的方法詳解

    微信小程序?qū)崿F(xiàn)下拉刷新和上拉分頁效果的方法詳解

    這篇文章主要為大家詳細介紹了微信小程序動畫是如何實現(xiàn)下拉刷新和上拉分頁效果的,文中示例代碼講解詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • webpack踩坑系列之less-loader6.0.0的javascriptEnabled報錯問題

    webpack踩坑系列之less-loader6.0.0的javascriptEnabled報錯問題

    這篇文章主要介紹了webpack踩坑系列之less-loader6.0.0的javascriptEnabled報錯問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • JavaScript中map屬性示例詳解

    JavaScript中map屬性示例詳解

    Map對象在JavaScript中提供了一種靈活且高效的鍵值對存儲方式,它具有許多實用的方法,如set()、get()、has()和delete()等,使得操作和管理鍵值對變得更加簡單,這篇文章主要介紹了JS中map屬性,需要的朋友可以參考下
    2024-08-08
  • js調(diào)用設備攝像頭的方法

    js調(diào)用設備攝像頭的方法

    這篇文章主要為大家詳細介紹了js調(diào)用設備攝像頭的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • 微信小程序?qū)崿F(xiàn)select二級下拉

    微信小程序?qū)崿F(xiàn)select二級下拉

    這篇文章主要為大家詳細介紹了微信小程序?qū)崿F(xiàn)select二級下拉效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • JS數(shù)組合并與對象合并的方法匯總

    JS數(shù)組合并與對象合并的方法匯總

    這篇文章主要給大家介紹了關(guān)于JS數(shù)組合并與對象合并的方法,本文將介紹常見的JS對象合并和數(shù)組合并方法,幫助讀者更好地理解和運用這些方法,需要的朋友可以參考下
    2024-12-12
  • 原生js實現(xiàn)無縫輪播圖

    原生js實現(xiàn)無縫輪播圖

    這篇文章主要為大家詳細介紹了原生js實現(xiàn)無縫輪播圖,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-01-01
  • Echarts餅圖樣式之添加內(nèi)圈陰影達到立體效果

    Echarts餅圖樣式之添加內(nèi)圈陰影達到立體效果

    餅圖主要是通過扇形的弧度表現(xiàn)不同類目的數(shù)據(jù)在總和中的占比,它的數(shù)據(jù)格式比柱狀圖更簡單,這篇文章主要給大家介紹了關(guān)于Echarts餅圖樣式之添加內(nèi)圈陰影達到立體效果的相關(guān)資料,文中還介紹了echarts餅圖外部陰影設置的方法,需要的朋友可以參考下
    2024-02-02

最新評論

油尖旺区| 德庆县| 汝南县| 隆德县| 中西区| 西乡县| 花莲县| 府谷县| 南陵县| 东源县| 杭州市| 资中县| 淳化县| 镇沅| 松溪县| 贵州省| 安吉县| 夏河县| 明水县| 桦南县| 淅川县| 齐河县| 岳阳县| 含山县| 景德镇市| 大田县| 昔阳县| 静宁县| 嘉黎县| 三台县| 祁门县| 天峻县| 静安区| 海南省| 巴里| 韶山市| 新化县| 裕民县| 大丰市| 增城市| 宜君县|