生成带有加权概率的随机数 [英] Generate random numbers with weighted probabilites

查看:108
本文介绍了生成带有加权概率的随机数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想随机选择一个数字,但要基于一组数字的概率;例如(2-6).

I want to select a number randomly, but based on probability from a group of numbers; for example (2-6).

我想要以下发行版:

  • 6的概率应该是10%
  • 5的概率应该是40%
  • 4的概率应该是35%
  • 3的概率应该为5%
  • 2的概率应该为5%

推荐答案

您能做的最好的事情是生成一个介于0到100之间的数字,并查看该数字在什么范围内:

The best you can do is generate a number between 0 and 100, and see in what range the number is:

$num=rand(0,100);

if ($num<10+40+35+5+5) 
    $result=2;

if ($num<10+40+35+5)
    $result=3;

if ($num<10+40+35)
    $result=4;

if ($num<10+40)
    $result=5;

if ($num<10)
    $result=6;

请注意,您的总概率不等于1 ,因此有时$ result是不确定的

Be careful, your total probability isn't equal to 1, so sometimes $result is undefined

如果您想要可以轻松配置的内容,请参见@ grigore-turbodisel的答案.

See @grigore-turbodisel 's answer if you want something that you can configure easily.

这篇关于生成带有加权概率的随机数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆