在金字塔结构中生成随机玩家优势(PHP)

caw*_*caw 4 php random

对于在线游戏(MMORPG),我想创建具有随机强度值的角色(玩家).字符越强,这种情况就越少.

例:

  • 12,000名1名球员
  • 10,500名优势2名球员
  • 8,500名实力3名球员
  • 6,000名4名球员
  • 3000名实力5名球员

实际上,我需要从1.1到9.9的浮动渐进强度值,但是对于这个例子,用整数强度来解释它更容易.

你知道如何用PHP编写代码吗?当然,我需要mt_rand()来生成随机数.但是我怎样才能实现这种金字塔结构呢?

它有什么作用?根函数,指数函数,幂函数或对数函数?

提前致谢!

它应该在图中看起来像这样:

金字塔图http://img7.imageshack.us/img7/107/pyramidy.jpg

Joh*_*sch 5

您可以使用对数函数模拟分布,例如您描述的分布.以下将返回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()函数的名称