您的位置:首页 > 编程语言 > Java开发

给定一个正整数数组,随机取出一个数,要求数值越大的数被被取出的概率越大。- JAVA

2017-10-19 11:00 477 查看

问题

给定一个正整数数组,随机取出一个数,要求数值越大的数被被取出的概率越大

思路

先将数组arr按从小到大排序,然后新建一个数组arrb

arr中排在第1位的数,在arrb中写入1次

arr中排在第2位的数,在arrb中写入2次

arr中排在第3位的数,在arrb中写入3次

以此类推…

如下图

arrarrb
1,2,3,41,2,2,3,3,3,4,4,4,4
出现次数多的数,即数值大的数,生成该范围内的随机数的概率也越大

java代码如下

import java.util.Arrays;
import java.util.Random;

public class Test {
public static void main(String[] args) {
System.out.println(getItem(new int[]{4,2,3,1}));
}
public static int getItem(int arr[]) {
Arrays.sort(arr);
int sum = 0 ;
for(int i = 1 ; i <= arr.length ; i++) {
sum += i;
}
int b[] = new int[sum];
for(int i = 0,index = 0 ; i < b.length ; index++,i += index) {
for(int j = i ; j < i + index + 1 ; j ++) {
b[j] = arr[index];
}
}
Random random = new Random();

return b[random.nextInt(sum)];
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐