比方说,我得到了号码3.然后我必须选择0到3之间的随机数,但是0的选择概率大于1,1选择的概率大于2,而2选择的概率大于3.
我已经知道,通过执行以下操作可以实现从0到3选择特定数字的百分比机率:
double r = Math.random();
int n = 0;
if (r < 0.5) {
n = 0;
// 50% chance of being 0
} else if (r < 0.8) {
n = 1;
// 30% chance of being 1
} else if (r < 0.95) {
n = 2;
// 15% chance of being 2
} else {
n = 3;
// 5% chance of being 3
}
Run Code Online (Sandbox Code Playgroud)
问题在于它3可以是任何东西.我怎样才能做到这一点?
注意:数字0.5,0.8和0.95由我任意选择.我希望这些数字减少,以便所有数字的总和等于1,并且如果在某种程度上可能的话,它们都不相同.
我有以下 PHP 代码:
<?php
$array = ["test", "1", "2", "3"];
$id = 0;
echo "ID: 1 - <pre>", print_r($array), "</pre><br/>";
Run Code Online (Sandbox Code Playgroud)
当我执行代码时,输出如下:
ID: 1 - Array
(
[0] => test
[1] => 1
[2] => 2
[3] => 3
)
1<br/>
Run Code Online (Sandbox Code Playgroud)
如果仔细观察,您会注意到 的数组输出后面有一个数字print_r。为什么会出现这个数字?有没有办法阻止它出现?