例如,假设我输入"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个随机数.添加它们.非常简单,只需:将它们乘以或除以某个数字,这样,总数就是所需的总数!就这么简单!