Php 把一个数分成随机不相等的部分
因此,我试图制作一个脚本,将值4随机分成12个不同的变量。我想不出一个好办法来正确地做这件事。我考虑过将数字随机化,使其接近0.33(4的1/12),但这通常会导致最后几个数字被低估。以前有人尝试过类似的方法,或者对如何使其尽可能随机且均匀不均匀有什么好主意吗?从您喜爱的随机数生成器中生成12个随机数,称它们为Php 把一个数分成随机不相等的部分,php,algorithm,math,Php,Algorithm,Math,因此,我试图制作一个脚本,将值4随机分成12个不同的变量。我想不出一个好办法来正确地做这件事。我考虑过将数字随机化,使其接近0.33(4的1/12),但这通常会导致最后几个数字被低估。以前有人尝试过类似的方法,或者对如何使其尽可能随机且均匀不均匀有什么好主意吗?从您喜爱的随机数生成器中生成12个随机数,称它们为r1..r12 把它们加起来,调用sumsum 4的第一个随机分数是(r1/sum)*4。剩下的应该是显而易见的 生成任何大于1的随机数,并在重新缩放到所需总和后生成 示例: 所需金额:
r1..r12
把它们加起来,调用sumsum
4
的第一个随机分数是(r1/sum)*4
。剩下的应该是显而易见的 生成任何大于1的随机数,并在重新缩放到所需总和后生成
示例:
- 所需金额:4
- 随机数:12345678910112
- 总和=78
- 重新缩放的数字:
12重新缩放到(12*4)/78以下算法提供均匀分布的分区,假设有可能在连续范围内(或至少在离散范围内,具有足够多的可能值,重复几率可以忽略不计)生成均匀分布的随机数 要将
t
划分为k
值,请执行以下操作:
- 在
范围内生成[0,t]
均匀分布的值k-1
- 对它们进行排序,并在开头添加
,在结尾添加0
t
- 使用相邻的差异作为分区