对于在线游戏(MMORPG),我想创建具有随机强度值的角色(玩家).字符越强,这种情况就越少.
例:
实际上,我需要从1.1到9.9的浮动渐进强度值,但是对于这个例子,用整数强度来解释它更容易.
你知道如何用PHP编写代码吗?当然,我需要mt_rand()来生成随机数.但是我怎样才能实现这种金字塔结构呢?
它有什么作用?根函数,指数函数,幂函数或对数函数?
提前致谢!
它应该在图中看起来像这样:
您可以使用对数函数模拟分布,例如您描述的分布.以下将返回1.1和9.9之间的随机强度值:
function getRandomStrength()
{
$rand = mt_rand() / mt_getrandmax();
return round(pow(M_E, ($rand - 1.033) / -0.45), 1);
}
Run Code Online (Sandbox Code Playgroud)
分布超过1000次运行(其中S强度值为何):
S | Count
--+------
1 - 290
2 - 174
3 - 141
4 - 101
5 - 84
6 - 67
7 - 55
8 - 50
9 - 38
Run Code Online (Sandbox Code Playgroud)
此答案已更新为包含强度值1.1(由于舍入而未包括在内)并修复了mt_getrandmax()函数的名称