public object GetResult() { FormatConfigTable(); ProbabilityFormatedItem item = null; float rand = Random(m_TotalProbability); for (int i = 0; i < m_FormatedTable.Count; ++i) { item = m_FormatedTable[i]; if (rand > item.from && rand <= item.to) { //命中 return(m_ConfigTable[item.index].data); } } return(null); }
void FormatConfigTable() { if (!m_Dirty) { return; } m_Dirty = false; if (m_FormatedTable == null) { m_FormatedTable = new List <ProbabilityFormatedItem>(); } else { m_FormatedTable.Clear(); } ProbabilityFormatedItem item = null; float totalProbability = 0; float last = 0; for (int i = 0; i < m_ConfigTable.Count; ++i) { last = totalProbability; totalProbability += m_ConfigTable[i].probability; item = new ProbabilityFormatedItem(); item.from = last; item.to = totalProbability; item.index = i; m_FormatedTable.Add(item); } m_TotalProbability = totalProbability; }