JAVA怎样随机生成10W个数字, 要求: 10W个数字总等于50W而且每个数字最小1最大100, 求代码及思路
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA怎样随机生成10W个数字, 要求: 10W个数字总等于50W而且每个数字最小1最大100, 求代码及思路相关的知识,希望对你有一定的参考价值。
雪地跪求大神指点, 感激不尽
问题描述,如下
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的数字, 还是不符合要求, 感觉你分析思路很不错, 对我帮助很大
参考技术A 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之间,你指哪个范围
追问但是运行代码10W个数字没有一个是100的
生成随机W字符
以上是关于JAVA怎样随机生成10W个数字, 要求: 10W个数字总等于50W而且每个数字最小1最大100, 求代码及思路的主要内容,如果未能解决你的问题,请参考以下文章
面试题:如何造10w条测试数据,在数据库插入10w条不同数据
就这几个简单页面APP,这混小子要我10W块?!大家评评理!