我知道这个问题可能已被提出,但我不清楚先前的问题是否足以知道他们是否按照我的意愿行事.
$fruits = array('20' => 'apple', '40' => 'orange', '40' => 'pear');
Run Code Online (Sandbox Code Playgroud)
关键是获取价值的机会的百分比.我想mt_rand()一个0到99之间的数字,并根据这些百分比从$ fruits返回一个值.
很可能我很困惑,因为我不知道如何解释我在寻找什么.
提前感谢您的帮助.
编辑:根据这些机会,想要来自$ fruits的随机值:
我希望有40%的机会获得橘子,40%的机会获得梨,80%的机会获得苹果.
编辑:为了进一步澄清,由于很多答案都错了,(或者我只是不理解他们的代码),无论我选择什么号码,我都需要一个结果,而不仅仅是20,40或40.
编辑:我已经重写了这个问题,希望目标更加清晰.
这是对这个问题的扩展问题在这里,我真的很喜欢在所提供的功能,这个答案.
在上面的答案中,人们能够设定击中极端的概率,较高的数字产生较高数字的概率,反之亦然.问题是我必须设置3组的概率.这些组是最低值(LV),最高值(HV)和中间值(MV).但是,为了简化请求,我们可以考虑EVP=HVP=LVP.
给定任何范围,HV/LV应基于指定的EVP出现,并且当您从每个极端的范围内进展/下降时,该范围中下一个值的概率将根据EVP之间的距离增加或减少.和MVP.
使用1-6的示例范围,1和6加权为5%(EVP),概率差为1/6为5%,2/4为15%,3/4为30%(MVP) ),总计100%.反过来也应该是可能的,交换EVP和MVP应该产生下图的反转.
这是一个我希望将传达给定示例预期结果的图像.
中加权:

额外奖励:如果我能够单独设置HVP和LVP产生类似于下图的结果,那将是最优秀的(注意:图表不符合上述规范).
中等加权(奖金):

谢谢!
我即将创建一个脚本,为我的彩票选择一个赢家.门票的数量选择如下:amount of money * 100所以$ 1.26 = 126门票.
我做了这个,它给了我中奖的票号,但后来我无法得到获胜的用户:
$totaltickets = 0;
foreach($players as $player){
$totaltickets += $player->depositedValue*100;
}
$winningTicket = rand(1,$totaltickets);
Run Code Online (Sandbox Code Playgroud)
我有这样的行:
Player1 - 1.25$
Player2 - 5.99$
etc..
Run Code Online (Sandbox Code Playgroud)
如果有可能那么我想保持这样,并且每个票证在数据库中没有1000行.
可能重复:
在PHP中按权重生成随机结果?
我有一个Web应用程序,用户可以在其中添加1-20个文本字符串,并为它们指定显示频率的权重.然后,系统将根据定义的权重选择随机字符串.最好的方法是什么?每个字符串的重量范围值是否重要?我可以让用户为每个字符串分配一个数字(0-100)吗?你会如何选择随机字符串?(每个选择都不担心之前选择的内容,每个字符串在每次调用开始时选择的几率(基于权重)相同).
我在论坛中对此有很多不满,但所有答案都是如此具体的问题.我发现我最需要的是:Alon Gubkin的概率随机数发生器.
不同的是,Alon要求给予一张脸(这是六张)额外的机会.在我的情况下,我想划分六个面孔的机会,使它们加起来达到100%.例如,面部1有40%的几率,面部2只有10%,面部3有25%,......等.
我怎样才能做到这一点?
我有一个元素数组:
$arr = array(
'0' => 265000, // Area
'1' => 190000,
'2' => 30000,
'3' => 1300
);
Run Code Online (Sandbox Code Playgroud)
我想根据区域(数组值)获取随机索引。我需要更频繁地选择具有大价值的区域。我怎样才能做到这一点?
我现在拥有的:
$random_idx = mt_rand(0, count($arr)-1);
$selected_area = (object)$arr[$random_idx];
Run Code Online (Sandbox Code Playgroud)
谢谢!
所以我有一个加权项目列表,我想从这个列表中选择4个非重复项目.
Item Weight
Apple 5
Banana 7
Cherry 12
...
Orange 8
Pineapple 50
Run Code Online (Sandbox Code Playgroud)
最有效的方法是什么?我最初的尝试是,如果一个已经被选中的项目出现的话,只需重新选择随后的选秀权......但是对于一个小名单,这可能会导致大量的重新加入.
编辑澄清:对于上面的例子,忽略水果D到N,总重量为82.因此首先被挑选的机会是:A~6%B~8.5%C~14.6%O~9.8%P ~61%一旦物品被挑选,概率将(应该!)改变.
我有以下数组和代码
$a = [
149 => 55,
130 => 10,
131 => 5,
132 => 5,
133 => 10,
134 => 10,
135 => 5
];
$rand = rand (0,(count($a)-1));
echo array_values($a)[$rand];
Run Code Online (Sandbox Code Playgroud)
这将主要产生 as5,10而不是55.
值的总和是 100% 的概率。值可以是十进制的,也可以是 55.55、10.10 等,但总体来说是 100%
我已经关注了https://www.geeksforgeeks.org/how-to-get-random-value-out-of-an-array-in-php/
但这并没有像预期的那样给出完美的结果。
所以应该主要随机选择概率最高的。
所以结果可以是这样的:55、55、10、10、10、55、5等。
我找到了一些有用的链接在 PHP 中按重量生成随机结果?其中概率 = 权重
如何生成1到10之间的加权随机数,其中10为最高机会,1为最低机会?
rand(1,10) ?
Run Code Online (Sandbox Code Playgroud)
需要是一个简单的单行代码,因为它将运行100,000次
可能重复:
在PHP中按权重生成随机结果?
我已经创建了一个数据库,其中我存储rss feeds.i的名称和链接已经使rss阅读器和一切都很好,直到现在.我想制作一个新闻滚动条,将显示feed的文章.但我想要为饲料提供一些重量值,以便每个饲料根据其对我的重要性进行选择,并在从数据库中选择饲料时自动选择其文章仅在卷轴中显示.有关如何做的任何想法那??? ???提前谢谢..
ps我的问题是如何从数据库中随机加权选择Feed,而不是如何显示feed的文章(我已完成此部分).
我想随机选择一个数字,但是基于一组数字的概率; 例如(2-6).
我想要以下分布: