JAVA怎样随机生成10W个数字, 要求: 10W个数字总等于50W而且每个数字最小1最大100, 求代码及思路

雪地跪求大神指点,感激不尽... 雪地跪求大神指点, 感激不尽 展开
 我来答
chenguang5092
2014-05-13 · TA获得超过664个赞
知道小有建树答主
回答量:520
采纳率:50%
帮助的人:456万
展开全部

问题描述,如下
1 随机10w个数
2 范围 1<=n<=100
3 总和50w,即平均5
问题简化为:10w个数分解成若干个随机过程,每个过程的到数[1,100]的平均值为5
从随机的角度来讲,这个过程不好确定。(你的题目确实是这样的吗)
如果总和为500w,平均即50,那么每2个数作为一个随机过程:假设随机数为23,则另一个(100-23),平均为50,
执行5w次该过程即可(另:如果范围1~10同理)

/**
     * 适合每2个数一个随机过程
     * @param times   次数
     * @param sum     总和
     * @param min     范围下
     * @param max     范围上
     * @return int[]  数组
     */
    public int[] randomw(int times, int sum, int min, int max) {
        int[] result = new int[times];
        int avg = sum / times;
        for (int i = 0; i < times; i++) {
            int r = (int) (Math.random() * (max - min)) + min;
            result[i++] = r;
            result[i] = 2 * avg - r;
        }
        return result;
    }
追问
辛苦了, 我试了一下生成是数组里面有小于1的数字, 还是不符合要求, 感觉你分析思路很不错, 对我帮助很大
gty_andy
2014-05-13 · TA获得超过125个赞
知道小有建树答主
回答量:253
采纳率:0%
帮助的人:124万
展开全部
import java.util.Arrays;
import java.util.Random;

public class Test {

    public static void main(String[] args) {
        int[] arr = new int[100000];
        Arrays.fill(arr, 1);
        Random r = new Random();
        for(int i=0;i<500000-arr.length;i++){
            int index = r.nextInt(arr.length);
            if(arr[index]<100){
                arr[index]++;
            }else{
                i--;
            }
        }
    }

}

arr中的数就是我们要的
更多追问追答
追问
谢谢, 好像不行, 生成的数字总和虽然对, 但数字值的范围不符合要求
追答
每个数都是1到100之间,你指哪个范围
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式