有没有什么工具可以在数组里取个随机数出来 然后取出来的概率我能提前设置好的?

2021-12-09 13:40:28 +08:00
 yinft

比如[1 2 3 4 5] 我设置 1 的概率是 60% 剩下的几个都是 10%,然后取 10 次 6 次左右是 1 ,kotlin 或者 java 语言实现的都行

1054 次点击
所在节点    问与答
9 条回复
yinft
2021-12-09 13:42:10 +08:00
求助啊。。。
coderluan
2021-12-09 13:49:39 +08:00
这个自己写就完了,要什么工具???

生成一个新数组,概率多少就塞多少个进去,比如你的例子,新数组就是[1,1,1,1,1,1,2,3,4,5], 随机取一个就满足了。
ipwx
2021-12-09 13:50:06 +08:00
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
ipwx
2021-12-09 13:50:55 +08:00
哦补充:看 prob_vec 第几项 <= p 可以用二分。

所以整个复杂度是 O(N + log N),额外空间 O(N)
wolfie
2021-12-09 13:55:19 +08:00
Hutool RandomUtil.weightRandom()
misaka19000
2021-12-09 14:06:33 +08:00
设置权重就行了,比如要 1 的概率是 60%,那么就保证 1 在数组中的占的比例是 60%就行
yinft
2021-12-09 14:09:13 +08:00
@wolfie 感谢
yinft
2021-12-09 14:09:25 +08:00
感谢老哥们
whi147
2021-12-10 08:55:44 +08:00
赌轮盘

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/821095

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX