java - 如何在数组的随机索引位置计算随机出现的值
问题描述
可以说我有任何大小的数组。由于“某些操作”,数组的随机索引开始出现数字 20。这个 20 值可以是任何其他定义的值,但例如,让它为 20。所以如果我有数组int a[]={1,2,3,4,5..,10}
并且我做某事,数组将是 int a[]={20,2,20,20,5,..,10}
. 假设我有三个计数器称为int a, int b, int c;
。
int a
如果被 20 替换的值是 1,则Counter -> 仅增加 1。
如果被 20 替换的值是 3,则Counter int b
-> 仅增加 1。
如果被 20 替换的值是 4,则Counter int c
-> 仅增加 1。
计数器可以是任何值,不仅是1,3,4
然后,当我从包含值 20 的数组中选择随机索引时,我想将正确的计数器加一。因此,如果我得到随机索引 [0],我想将计数器增加int a
一。
我怎么能做这样的事情?谢谢你。
解决方案
您可以直接使用一系列if
语句或一个switch
语句。
int[] array ={1,2,3,4,5,...,10};
int a = 0, b = 0, c = 0;
int index = ThreadLocalRandom.current().nextInt(array.length); //random index
switch(array[index]){
case 1: ++a; break;
case 3: ++b; break;
case 4: ++c; break;
}
array[index] = 20;
使用 a 更简单,使用Map
这种数据结构更容易泛化算法。
Map<Integer, Integer> count = new HashMap<>();
count.merge(array[index], 1, Integer::sum);
array[index] = 20;
// use count.getOrDefault(1, 0) to get the number of elements whose
// values were 1 before being changed to 20
推荐阅读
- javascript - Ajax:如何解决每个 $_POST 的未定义索引错误?
- microcontroller - 移位寄存器(74hc595)和ccs中的图片
- angular - Angularfire2使用子过滤数据存在
- javascript - 对象未在范围内定义
- sql - 选择具有给定值的第一行 T-SQL
- mysql - mysql 通过 id 选择使用 between
- http - Go 如何从请求 a.body 流式读取到新请求的主体
- javascript - 如果尚未打开,请打开一个新选项卡
- automated-tests - 无法在 Katalon Studio 中多次单击具有相同名称的对象
- java - 在数据库中存储对 java 类的引用