两种生成红包的方式对比
拼手气红包有两种计算方法,一种是预计算,一种是实时算。
预计算在生成拼手气红包的时候,会提前根据总金额M和红包人数N,生成每个红包的金额,在抢红包的过程中,只需要从金额列表中取出,直至取完。这种方式需要占用额外的存储空间并且增加额外的I/O,在高并发场景下并不是最优的解决方案。
实时算采用的是纯内存计算,不需要预算空间存储,实时性很高。
蒙特卡罗方法
蒙特卡罗方法是由著名科学家、“计算机科学之父”和“博弈论之父”冯·诺依曼提出的,此种方法又可称为统计模拟法、随机抽样技术,是一种以概率和统计理论方法为基础的计算方法。主要是通过将待求解的问题采用相同的概率模型进行求解,并用电子计算机实现统计模拟或抽样,以获得问题的近似解。
蒙特卡罗方法生成随机数的主要步骤如下:
(1)针对实际问题建立一个简单且便于实现的概率统计模型,使所求的量恰好是该模型的概率分布或数字特征。
(2)基于模型的随机变量建立抽样方法,在计算机上进行模拟测试,抽取足够多的随机数。 (3)对模拟实验结果进行统计分析,给出所求解的估计值,这就是最终产生的随机数。
(4)必要时,可以通过改进模型以提高估计精度和减少实验费用,最终提高模拟效率。 直白点讲,这种算法主要是通过建立一个模型,并对模型中的随机变量建立抽样方法,在计算机中反复多次进行模拟测试