zoukankan      html  css  js  c++  java
  • 加权重概率算法

    void calcutteProbability() {
    int FenMu = 0;
    for (int i = 0; i < m_ShowLoadingList.Count; i++)
    {
    FenMu += m_ShowLoadingList[i].Weight;
    }
    result = new System.Random().Next(0,FenMu+1);
    for (int i = 0; i < m_ShowLoadingList.Count; i++)
    {

    // float flt = (m_ShowLoadingList[i].Weight / FenMu);
    // flt = float.Parse(Convert.ToDouble(flt).ToString("f2"));
    int seed = 0;
    for (int j = 0; j < i+1; j++) {
    seed += m_ShowLoadingList[j].Weight;
    if (seed >= result) {
    result = m_ShowLoadingList[i].Weight;
    break;
    }

    }

    if (seed >= result)
    break;
    }

    for (int k = 0; k < m_ShowLoadingList.Count; k++)
    {
    if (result == m_ShowLoadingList[k].Weight)
    {
    if (!probabilityDic.ContainsKey(result))
    {
    List<TDStruct.Loading> list = new List<TDStruct.Loading>();
    list.Add(m_ShowLoadingList[k]);
    probabilityDic.Add(result, list);
    }
    else
    {
    probabilityDic[result].Add(m_ShowLoadingList[k]);
    }
    }
    }

    }

    void MathRandomNum() {
    if (probabilityDic[result].Count > 1)
    {
    List<TDStruct.Loading> dataList = probabilityDic[result];
    int r = 0;
    r = UnityEngine.Random.Range(0, dataList.Count - 1);
    data = dataList[r];
    }
    else data = probabilityDic[result][0];

    }

  • 相关阅读:
    POJ 2386 Lake Counting
    POJ 1852 Ants
    HDU 4570 Multi-bit Trie
    HDU 4611 Balls Rearrangement
    ZOJ 3551 Bloodsucker
    HEU 百题解1001 谁是中间的那个
    BNU 1001 北师大ACM新手指导/ICPC introduction(1)
    BOJ 1580 Shoot
    BOJ 1578 Maximum
    BOJ 1577 Easy Game
  • 原文地址:https://www.cnblogs.com/DOGame/p/5650602.html
Copyright © 2011-2022 走看看