- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在寻找一种算法(无论是什么编程语言,也许是伪代码?),您可以在其中获得具有不同概率的随机数。
例如:
A random Generator, which simulates a dice where the chance for a '6' is 50% and for the other 5 numbers it's 10%.
算法应该是可扩展的,因为这正是我的问题:
I have a array (or database) of elements, from which i want to select 1 random element. But each element should have a different probability to be selected. So my idea is that every element get a number. And this number divided by the sum of all numbers results the chance for the number to be randomly selected.
有人知道解决这个问题的好的编程语言(或库)吗?最好的解决方案是提供 1 个随机条目的良好 SQL 查询。但我也会对其他编程语言的每一次提示或尝试感到满意。
最佳答案
实现它的一个简单算法是:
sum[i] = p1 + p2 + ... + pi
。这只进行一次。[0,sum[n])
上均匀分布的数r
,二分查找第一个数高于 均匀分布的随机数。可以使用 binary search 来完成高效。很容易看出r
在一定范围内[sum[i-1],sum[i])
的概率确实是sum[i]-sum[i-1] = pi
(在上面,我们认为sum[-1]=0
,为了完整性)
对于您的多维数据集示例:
你有:
p1=p2=....=p5 = 0.1
p6 = 0.5
首先,计算sum
数组:
sum[1] = 0.1
sum[2] = 0.2
sum[3] = 0.3
sum[4] = 0.4
sum[5] = 0.5
sum[6] = 1
然后,每次需要抽取一个数:在[0,1)
中抽取一个随机数r
,并选择最接近它的数,例如:
r1 = 0.45 -> element = 4
r2 = 0.8 -> element = 6
r3 = 0.1 -> element = 2
r4 = 0.09 -> element = 1
关于algorithm - 概率可调的随机算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30756067/
在不使用 css 或 table 的情况下帮助 php 或 html 中的 div 新手。 尝试使用具有以下行为的 div 执行此 4 x 列、2 x 行 // [.....adjustable..
我有这个部分: 我想要实现的是让左边的跨度,右边的填充,然后是中间的 HR,右边的跨度和价格,但我想让价格对齐向右,并使 HR 可调,因此它始终以价格结束并在第一个跨度之后开始。无论我如何尝试,我都无
我是一名优秀的程序员,十分优秀!