如何在PHP中创建指定数量的随机值,这些值均等于指定的数字?

Rob*_*Rob 9 php random

例如,假设我输入"10"表示值,"10000"表示总金额.

该脚本需要随机化10个不同的数字,所有数字都等于10000.不多也不少.

但它也需要是动态的.如同,有时我可能会输入'5'或'6'甚至'99'作为数值,以及任何数字(最多10亿甚至更高)作为总金额.

我该怎么做呢?

编辑:我还应该提到所有数字都需要是一个正整数

Fat*_*tie 10

这里的正确答案简单得令人难以置信.

想象一下白线,假设有1000个单位长.

您想使用红色标记将线条分成十个部分.

非常简单,选择NINE RANDOM NUMBERS并在每个点上加上红色油漆标记.

就是这么简单.你完成了!

因此,算法是:

(1)选择0和1000之间的9个随机数(2)将9个数字,0和1000,在数组(3)中使用减法对数组(4)进行排序获取数组值之间的10个"距离"

你完成了.

(显然,如果你想在最后一组中没有零,在第(1)部分中,如果你发生碰撞,只需重新选择另一个随机数.)

理想情况下,作为程序员,我们可以在我们的脑海中"看到"这样的视觉算法 - 尝试以视觉方式思考我们所做的事情!


脚注 - 对于任何阅读本文的非程序员来说,只是要明确请注意,这就像"学习计算机科学时你学到的第一件事!" 即我没有得到任何赞誉,我只是输入答案,因为我偶然发现了页面.对我不称赞!

只是为了记录另一个常见的方法(取决于期望的结果,无论你是处理实数或整数,还是其他约束)也非常"啊哈!" 优雅.你要做的就是:得到10个随机数.添加它们.非常简单,只需:将它们乘以或除以某个数字,这样,总数就是所需的总数!就这么简单!

  • 获得无疑最好和最简单答案的+1; -0.9表示吹嘘:P仍为+1. (2认同)
  • 它可能很简单,但它不会**生成均匀分布的数字......它偏向于大小为1000/10的数字(总和为1000和10的数字). (2认同)
  • Artefacto-它绝对绝对会产生统一的数字。思考该算法可能是您脑子里犯了一个整体错误。如果您不相信,请尝试一些测试! (2认同)