我想以不等概率在两个备选方案之间随机选择*。
例如,当用户按下按钮时,有25%的时间会发出声音A,有75%的时间会发出声音B。我可以手动设置简单的比率,例如1:4和2:4,但是我遇到了麻烦比例为3:5。
有什么一般的思考方式?
*我的意思是一眼一看就无法预测。我注意到任何与“随机”一词有关的问题都会得到一个 “学徒门萨” 。
对于3:5,您可以将它们加在一起得到8,并选择小于8的随机整数。如果它是0、1或2(三倍机会),则选择A,如果它是3、4、5、6或选择B的概率为7(五次机会)。按代码进行选择,您只需检查您的随机数是否小于3。
对于3:5:4之类的东西,您将选择一个小于12的随机数(3 + 5 + 4),如果小于3,则选择A;否则,如果选择的数字小于8(3 + 5),则选择B ,否则选择C。
这可以推广到任意数量的替代方案,但是对于许多替代方案而言效率低下,因为您必须对照每个阈值(即O(n))检查随机数。这样的问题]似乎为加权随机选择提供了更多更有效(但更复杂)的算法,并具有更多选择。