我想要一个算法来模拟这个加载的骰子:
概率为: 1: 1/18 2: 5/18 3: 1/18 4: 5/18 5: 1/18 6: 5/18
它偏爱偶数。
我的想法是用matlab计算上述情况的可能性。我可以用1/6 (普通骰子)来做,但我很难将其应用于加载的模具。
发布于 2011-11-30 08:33:46
一种方法:生成两个随机数:第一个是从0到5 (0:奇数,1- 5:偶数),用于确定偶数或奇数。然后生成介于0和2之间的第二个值,该值确定其类别内的确切数字。例如,如果第一个数字是3(表示偶数),第二个是2(表示第三个块,1-2是一个块,3-4是另一个块,5-6是最后一个块),则结果是6。
另一种方法:生成一个介于0和17之间的随机数,然后您可以简单地使用/6和%6,并使用这两个数字来决定。例如,如果/6为0,则选择介于1和2之间,如果%6 == 0,则选择为1,否则为2。
发布于 2011-11-30 08:48:00
在matlab中:
ceil(rand*3)*2-(rand>(5/6))发布于 2011-11-30 17:46:51
通用解决方案:
使用roulette wheel selection
n = generate number between 0 and sum( probabilities )
s = 0;
i = 0;
while s <= n do
i = i + 1;
s = s + probability of element i;
done循环完成后,我将是所选元素的编号。这适用于任何一种不对称的概率分布,即使你有权重而不是概率,并且想要跳过正规化。
https://stackoverflow.com/questions/8319671
复制相似问题