【发布时间】:2015-01-01 07:20:44
【问题描述】:
例如,如果我有一个这样的整数数组:
int[] list = {1, 4, 2};
我想从这 3 个数字中选择一个,但更频繁地选择更大的值:
1 get chosen 1/7 of the time
4 gets chosen 4/7 of the time
2 gets chosen 2/7 of the time
如果 Java 中还没有函数,我该如何为此编写函数。
编辑:我正在寻找一个有效的解决方案,O(n) 或更好。
我将在许多线程中多次运行此代码。建立一个新列表是不够的。
【问题讨论】:
-
到目前为止你有没有尝试过?
-
是的,我将每个元素复制到一个数组列表中 n 次,然后从该列表中选择一个随机元素。不过效率不高。
-
@Alexander_Winter 是的,这是我尝试过的,但我需要一个更好的主意。我觉得有一种简单的方法可以做到这一点,而无需每次都分配更多内存。
-
您是否需要始终使用这些概率,或者每次选择随机元素时它们都会改变?