2012-02-10 47 views
0

我想要低估一个比赛,该比赛最初是以9名选手以1500个筹码开始,然后当一名选手退出比赛时,他的筹码会被送给赢得对手的筹码。 主要有双人扑克/三人扑克等,但玩家之间还有其他一些小筹码交易。在某些条件下生成随机数

我怎样才能随机生成他们的芯片考虑到芯片的交易行为?

我只是使用rand()但这不会按预期工作。


例如: 如果我有9名球员,我没有任何双窗口。所以堆栈是与像一些变化相似:

$stacks = array(1300,1150,1650,1800,1500,1550,1450,1800,1500,1550); 

在场景中有4名球员就不会有5个UPS:

$stacks = array(7500,1500,1500,1500) or array(4500,3000,3000,1500); //this should be randomized a little bit to 

$stacks = array(7800,1350,1250,1950); 

我希望我已经清楚,如果不是我会编辑回帖!

+0

为什么不兰特()工作? – CBusBus 2012-02-10 18:40:27

+0

我不确定我是否理解芯片随机转移的数学运算,rand()应该正常工作,如果你想要一个更好的随机化算法,使用mt_rand(Mersenne Twister算法) – 2012-02-10 18:49:30

回答

1

如果我正确理解您的担心,这里是做到这一点的一种方法:

for ($x = 0; $x < $NUMBER_OF_EXCHANGES; $x++) { 
    $loser = array_rand($stacks); 
    $winner = array_rand($stacks); 
    $stacks[$loser] -= 50; 
    $stacks[$winner] += 50; 
} 
+1

我认为一个改进会而不是总是使用50,从(50,100,200,500,max)中随机选择 – Brandon 2012-02-10 18:51:21

+0

我甚至不会使用循环,或者如果我自己做了常量,但是例如,绝招:--D – Mikhail 2012-02-10 21:46:31