所以,我有两个数字,比如说,A和B.随机舍入
A是任意正数,B是0到100
之间的百分比我需要的是一个百分比B,但随机向上或向下四舍五入,例如
A = 15, B = 50, result=7(50%) or 8(50%)
A = 10, B = 33, result=3(67%) or 4(33%)
我当前的代码是
floor($A* ($B + rand(0, 9))/100)
,但我相信这是不正确的,并有更好的解决方案了这一点。
编辑:
我查看答案,实际测试过他们(here)。提交的解决方案的问题是它们都使用rand(0,1),这意味着在50%的情况下,它总是会进行无限累加。但是这里有一个问题:例如,再次采取“A = 10,B = 33”的情况。如果B = 31或B = 39,则基本上没有区别。我想要的是对应的百分比(例如31会导致3在90%的时间和4在10%的情况下)
从我能看到的答案,似乎我的原始解决方案将工作只是精细。我原本应该提到,这不仅仅是“随机四舍五入”,并且解释第二种情况会好一点。
最初的想法是,我有一个数组,例如10个项目,我需要得到他们的33%。我不能一直给他们3或4个,因为它弄乱了整个百分比。所以我需要它从长远来看至少在统计上是正确的。
但无论如何,谢谢你的时间。
'兰特(0,1)地板($ A/100 * $ B):小区($ A/100 * $ B)'' – sectus 2015-02-10 12:29:09
A = 10,B = 33,结果= 3(67%)或4(33%)' - 这67%是什么意思? – sectus 2015-02-10 12:36:31
哦,删除我的答案,因为仙人掌可能是东西。我猜这个百分比意味着一个四舍五入的加权概率。...... – VolkerK 2015-02-10 12:39:42