首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在一个范围内收集我生成的数字?

如何在一个范围内收集我生成的数字?
EN

Stack Overflow用户
提问于 2013-11-04 22:27:52
回答 3查看 483关注 0票数 1

目前我有一个代码,可以生成200个介于0-100 (每行10个数字)之间的随机数,但现在我被卡住了,因为我想让它计算0-20,21-40,41-60,61-80,81-100之间的所有数字,并告诉我有多少数字在这个范围内。我该怎么做呢?我试过了,但我只是在这些范围内生成了数字。下面是我当前的代码:(如果可能的话,如何使用数组呢?我是一个初学者,还在学习)

代码语言:javascript
运行
AI代码解释
复制
import java.util.Random;

public class RandomStats1 {

public static void main(String[] args) {
    Random random = new Random ();

System.out.println("200 Generated numbers, 10 per line: ");
int numbersOnThisLine = 0;
    for (int i = 0; i < 200; i++)
{
int nextNumber = random.nextInt(100);
    System.out.print(nextNumber + " ");
    numbersOnThisLine++;

 if (numbersOnThisLine == 10)
 {
   System.out.print("\n");
   numbersOnThisLine = 0;
}

}
}
}
EN

回答 3

Stack Overflow用户

发布于 2013-11-04 22:56:33

  1. nextInt(100)提供0到99之间的值,而不是100。
  2. 您相等的大小范围是0-19、20-39、40-59、60-79、80-99。0-20是21个数字。

(上面的注释取自Peter Lawrey's comment).

  • You,可以使用一个数组来存储每个组的计数器。由于您有5个组,因此将数组的大小也定义为5。

  • 利用该语言,两个数字的整数除法的结果是double结果的整数部分。换句话说,当int x除以int y时,结果int z将是结果的整数部分,没有模和浮点部分需要考虑。例如:
  • 15 / 20 = 0
  • 20 / 20 = 1
  • 21 / 20 = 1

  1. 通过上面的注释,您可以很容易地获得数组的索引,该数组将用作计数器,即将生成的数字除以0和100,然后再除以20。

一小段伪代码:

代码语言:javascript
运行
AI代码解释
复制
int counterSize <- 5
int groupSize <- 20
int[] counter = new int[counterSize]
for i <- 0 to 200
    int nextNumber <- random(100)
    int index <- nextNumber / groupSize
    counter[index] <- counter[index] + 1
end for
票数 1
EN

Stack Overflow用户

发布于 2013-11-04 22:35:37

创建一个HashMap<Integer,HashSet<Integer>>,并使用以下值对其进行初始化:0、20、40、60和80 (以及空集):

代码语言:javascript
运行
AI代码解释
复制
HashMap<Integer,HashSet<Integer>> map = new HashMap<Integer,HashSet<Integer>>();
map.put(0, new HashSet<Integer>());
map.put(20, new HashSet<Integer>());
...

每当生成一个数字时,检查它在哪个范围内,例如,如果它在21-40范围内,则应将其添加到HashMap中,如下所示:

代码语言:javascript
运行
AI代码解释
复制
map.get(20).add(number);

在生成数字之后,您将按集合中的范围对它们进行排序。

备注:

Set不允许重复成员,因此如果您想允许重复,请不要使用HashSet,而应使用List或其他允许重复的数据结构。

票数 0
EN

Stack Overflow用户

发布于 2013-11-04 22:37:35

首先,您必须将它们存储在一个类似于ArrayList的数据结构中。

代码语言:javascript
运行
AI代码解释
复制
private List<Integer> numbers = new ArrayList<>();

for(int i = 0; i < 200; i++){
 int nextNumber = random.nextInt(100);
 numbers.add(nextNumber);
}

这将使我们所有的数字保持在一起。

现在,为了确定特定范围内的数字数量,我们可以创建自己的自定义类,因为Java不提供这一功能。

代码语言:javascript
运行
AI代码解释
复制
private class Range {
 private int lower;
 private int higher;

 public Range(int low, int high) {
  lower = low;
  higher = high;
 }

 // Getters

 public bool isValid(int i){
  return (i > lower && i < higher);
 }

 @Override 
 public int GetHashCode(){
  return lower;
 }

 @Override
 public bool Equals(Object o){
  if(!(o instanceOf Range)) { return false; }
  return ((Range)o).GetLower() == this.lower;
 }
}

现在我们可以在Map中使用它

代码语言:javascript
运行
AI代码解释
复制
private Map<Range, Integer> occurrences = new HashMap<Range, Integer>();

并用ranges初始化它:

代码语言:javascript
运行
AI代码解释
复制
for(int i = 0; i < 100; i+= 20){
 occurrences.put(new Range(i, i + 20), 0);
}

然后简单地迭代我们之前的列表:

代码语言:javascript
运行
AI代码解释
复制
for(int i : numbers) {
 for(Range key : occurrences.KeySet()){
  if(key.isValid(i) { occurrences.put(i); } 
 }
}

我知道它很复杂,可能不适合你所要求的水平。至少这是我的思考过程,你可以从中获取你想要的东西。毕竟,它可能会对未来的浏览器有所帮助。

更加简单(不需要额外的类):

代码语言:javascript
运行
AI代码解释
复制
private List<Integer> numbers = new ArrayList<>();
private Map<Integer, Integer> occurrences = new HashMap<>();

for(int i = 0; i < 200; i++){
 int nextNumber = random.nextInt(100);
 numbers.add(nextNumber);
}

for(int i = 0; i < 100; i++){
 occurrences.put(i, 0);
}

for(int i : numbers){
 int sofar = occurrences.get(i);
 occurrences.put(i, sofar + 1);
}

并获取某个范围内的实际数据:

代码语言:javascript
运行
AI代码解释
复制
int count = 0;
for(int i = 0; i < 100; i++){
 count+= occurences.get(i);
 if(i % 20 == 0) {
  System.out.println("From " + i - 20 + " to " + i + ":" + count);
  count = 0;
 }
}

带有数组的,更简单,丢失了单个值:

代码语言:javascript
运行
AI代码解释
复制
private int[] occ = new int[5];

for(int i = 0; i < 200; i++){
 int nextNumber = random.nextInt(100);
 System.out.println(nextnumber);

 if(i <= 20) { occ[0]++; }
 if(i <= 40) { occ[1]++; }
 if(i <= 60) { occ[2]++; }
 if(i <= 80) { occ[3]++; }
 if(i <= 100) { occ[4]++; }
}

System.out.println("Numbers from 0 to 20: " + occ[0]); 
System.out.println("Numbers from 20 to 40: " + occ[1]); 
System.out.println("Numbers from 40 to 60: " + occ[2]); 
System.out.println("Numbers from 60 to 80: " + occ[3]); 
System.out.println("Numbers from 80 to 100: " + occ[4]); 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19778494

复制
相关文章
grunt[mismatched:define]
最近,在做项目优化,想将用到的jquery.js、bootstrap.js、angular.js、angular-ui-router.js、validator.js以及require.js做all in one(统一合并为一个文件),已减少http的请求数量。然而,在合并的过程中,报错:
奋飛
2019/08/15
9120
grunt
npm install -g grunt-cli //全局安装grunt npm init -y //初始化package.json npm install grunt --save-dev //在项目中安装grunt grunt --help //查看更多信息 grunt 安装完毕
河湾欢儿
2018/09/06
6860
初识grunt
很早就听人提过grunt,我的概念里一直认为它是一个类似java界maven的东西,帮助开发人员从频繁地编译、配置管理等工作中解放出来。今天比较有空,就尝试使用一下这个东西,看看它是不是真的那么好用。 首先安装nodejs #安装Homebrew ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)" #安装nodejs brew install node #安装grunt-cli npm install -g
jeremyxu
2018/05/09
8410
grunt任务之seajs模块打包
grunt与seajs          grunt是前端流行的自定义任务的脚手架工具,我们可以使用grunt来为我们做一些重复度很高的事情,如压缩,合并,js语法检查等。通过定义grunt的配置文件Gruntfile.js,配置并注册grunt的任务,最终我们可以通过命令行来执行任务。          seajs主要用于模块化,通过define定义一个模块,可以通过require加载模块,exports导出模块。具体的seajs实现可通过本博客的系列博文--Seajs源码解析系列来进一步了解。     
欲休
2018/03/15
2.2K0
grunt任务之seajs模块打包
Gulp 在金蝶云平台项目中的使用经验
金蝶云平台
2017/06/12
1.7K0
Gulp 在金蝶云平台项目中的使用经验
初探Grunt
最近打算学习一些web编程的知识,今天学习了Grunt这个工具的用法,这里简要地对学习的知识点进行个总结。
王云峰
2019/12/25
8860
Express开发实战
今天为了制作compass-style.org国内网站,决定使用nodejs来开发,express作为nodeJs 快速开发框架成为不二选择。半年前就学过nodeJs,express,到现在就来一次实战吧,实战过程果然会遇到许多问题,但解决问题的过程就是一种历练,更加坚实了我使用nodeJs的决心
用户1065635
2019/03/21
1.6K0
grunt安装
随着node的流行,各种后台的技术应用到前端,依赖注入、自动化测试、构建等等。 本篇就介绍下如何使用Grunt进行构建。 grunt安装   由于grunt依赖于nodejs,因此需要先安装no
用户1154259
2018/01/17
1.8K0
grunt安装
Grunt快速入门
Grunt是基于JavaScript的命令行构建工具,它可以帮助开发者们自动化重复性的工作。你可以把它看成是JavaScript下的Make或者Ant。它可以完成诸如精简、编译、单元测试、lint检查等工作。
用户2936342
2018/08/27
6560
grunt入门笔记
想一想如果没有这个工具,我们需要手动新建一个压缩代码后的文件夹,每次修改原始文件,都要手动压缩一下,再保存到压缩后的文件夹,想想都要疯掉。所以,grunt前端必不可少。
卢衍飞
2022/11/12
1.2K0
grunt入门笔记
菜鸟进阶——grunt
http://yujiangshui.com/grunt-basic-tutorial/
超然
2018/08/03
1.5K0
菜鸟进阶——grunt
Grunt常用插件及示例说明
示例:将1.html文件中的var requestAddress = "";替换为var requestAddress = "http://blog.csdn.net/ligang2585116";
奋飛
2019/08/15
1.2K0
Grunt-cli的执行过程以及Grunt加载原理
通过本篇你可以了解到: 1 grunt-cli的执行原理 2 nodeJS中模块的加载过程 Grunt-cli原理 grunt-cli其实也是Node模块,它可以帮助我们在控制台中直接运行grunt命令。因此当你使用grunt的时候,往往都是先安装grunt-cli,再安装grunt。 如果你使用的是npm install -g grunt-cli命令,那么安装地址如下: windows: C:\\Users\\neusoft\\AppData\\Roaming\\npm\\node_modules\\gr
用户1154259
2018/01/17
1.2K0
Grunt配置及使用
1、node环境安装 http://www.runoob.com/nodejs/nodejs-install-setup.html 2、grunt安装 package.json文件 http://blog.csdn.net/zmrdlb/article/details/53190696 { "name": "payment", "version": "0.0.1", "author": "zhangxu", "devDependencies": { "grunt": "^0.4.5"
meteorzx
2018/03/28
1.5K18
剖析Grunt任务配置
A. 通过npm init在项目根目录下生成package.json; B. 通过npm install grunt --save-dev 安装grunt依赖; C. 项目根目录下手动创建文件夹Gruntfile.js
奋飛
2019/08/15
8380
package.json文件快速入门详解
相信入门nodejs或者npm的同学会对package.json这个文件有疑惑,对这个文件的作用不是很清晰,但搭建自己的博客每每用到node,npm这个文件又必不可少。
wblearn
2018/08/27
9930
package.json文件快速入门详解
Nagios3在ubuntu serve
前言:出于想监控ubuntu server 8.04下的Mysql是否在正常运行,于是找到了Nagios,Cacti及cactiez,cacti的绘图能力很强,nagios3报警能力强;经过简单试用,我觉的cacti的配置没有Nagios配置简单,所以就先试下nagios。用的版本是3.2.0
py3study
2020/01/06
6360
Webstorm调试Grunt脚本 原
需要注意的是:一定要在对应要调试的js中打断点才能进入调试模式。可以在Applications parameters设置要运行的任务参数。例如grunt dev。就在这增加一个dev参数。
随风溜达的向日葵
2018/08/15
8430
Webstorm调试Grunt脚本
                                                                            原
前端构建工具grunt
grunt是什么 grunt是目前非常流行的前端构建工具,支持自定义插件,有丰富的插件帮助我们完成构建任务 自动化完成我们指定的任务,例如压缩、编译、单元测试、linting等 前端为什么需要构建工具 先看下前端的开发场景 小项目中,css文件和js文件并不多,前端部分是很轻的,几乎不需要我们特别的关注 而在一个大项目中,css文件和js文件的数量会达到几十个上百个,一个页面中会引用很多css和js文件,js的开发方式也已经模块化,不再像之前那样 经常把很多函数写在一个文件中,css的开发开始使用SAS
dys
2018/04/02
1.1K0
点击加载更多

相似问题

这个问题能用深度学习来解决吗?

30

在深度学习中使用GPU有什么缺点吗?

10

有可能用实时预测来检测漂移吗?

20

我需要购买NVIDIA图形卡来运行深度学习算法吗?

30

机器学习与深度学习

40
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档