整数

分多次累计随机出某指定整数(多次随机整数,其和固定)的方法

心不动则不痛 提交于 2020-02-29 09:27:16
分多次累计随机出某指定整数(多次随机整数,其和固定)的方法 Spads Shane Loo Li 摘要 本文描述了同过 n 次取随机整数,使其总和为 m 的方法,并对该方法给出了数学证明。 正文 本文分为 5 个部分 ---------- ---------- ---------- ---------- 1、提出问题 2、解法程序 3、测试结果 4、测试程序 5、公式证明 【提出问题】 ---------- ---------- ---------- ---------- 有 n 次机会,每次随机一个整数。希望这 n 个整数之和是 m ;该怎么随机呢? 对于编程语言,惯例是提供了随机函数 r() ,得到 [0, 1) 之间的一个随机浮点数。所以从编程角度来说,随机一个整数,最常见的方式就是通过对 L * r() 向下取整来获取某一个范围内的整数。以上问题就转变成为了,如何获得合适的 L ,来满足 n 次随机的整数之和为 m 。 传统的做法,就是用 2 * m / n 来做这个 L 。问题是因为取整这个操作,让这种算法会产生比较大的误差。具体误差有多大,下边测试结果一栏会详细描述。 【解法程序】 —— 以 Java 程序为例 ---------- ---------- ---------- ---------- /** * <b>获取总量固定多次随机的倍率</b><br/> *