比如[1 2 3 4 5] 我设置 1 的概率是 60% 剩下的几个都是 10%,然后取 10 次 6 次左右是 1 ,kotlin 或者 java 语言实现的都行
比如[1 2 3 4 5] 我设置 1 的概率是 60% 剩下的几个都是 10%,然后取 10 次 6 次左右是 1 ,kotlin 或者 java 语言实现的都行
1
yinft OP 求助啊。。。
|
2
coderluan Dec 9, 2021 这个自己写就完了,要什么工具???
生成一个新数组,概率多少就塞多少个进去,比如你的例子,新数组就是[1,1,1,1,1,1,2,3,4,5], 随机取一个就满足了。 |
3
ipwx Dec 9, 2021
0. 设置一个 prob_vec = [0.6, 0.7, 0.8, 0.9, 1.0]
1. random.random() 得到一个随机数 p ,p 在 0 ~ 1 之间。 3. 看 prob_vec 第几项是最后一个 <= p 的,如果是就取对应的数。 比如你 p = 0.45 ,那么就取 1 。 如果 p = 0.65 ,就去 2 |
4
ipwx Dec 9, 2021
哦补充:看 prob_vec 第几项 <= p 可以用二分。
所以整个复杂度是 O(N + log N),额外空间 O(N) |
5
wolfie Dec 9, 2021
Hutool RandomUtil.weightRandom()
|
6
misaka19000 Dec 9, 2021
设置权重就行了,比如要 1 的概率是 60%,那么就保证 1 在数组中的占的比例是 60%就行
|
8
yinft OP 感谢老哥们
|
9
whi147 Dec 10, 2021 via iPhone
赌轮盘
|