`
_橙子
  • 浏览: 12353 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

生成随机数从数组里随机取值

    博客分类:
  • java
阅读更多

前短时间朋友发来一个题,说是面试题,这几天悠闲着拿出瞧瞧。
如题:定义一个整形数组,长度不限,值不限,要求用随机数取出来并打印,值不能取重复的,用最少循环次数解决刚开始看到的时候就分析了下:
1、数组长度不限,值不限,可能有重复值
2、随机数有一样的值,根据下标去取的话会取到一样的值
当时想到用递归去判断(由于代码繁琐,效率不高,这里就不贴出来了),判断如果这个随机数没出现就去取取了递归一次重来,这样做的性能很差,所以最后放弃了。
然后想到取一个删一个,但是数组没有删除的方法,于是想到了把数组转成集合,因为集合有移除的方法,取一个移一个,最后取完为止,这是我目前想到效率相对来说快一点的。
把代码贴出来,因为是用记事本写的,也没运行过,关键字可能会有错,主要还是思想到位,如果各位有更好的还请多指教指教~ 

 

	Integer[] a = new Integer[] { 1, 2, 3, 4, 5 };
		List list = new ArrayList();
		list = Arrays.asList(a);
		Random ran = new Random();
		int intSize = a.length;
		
		for (int I = 0; I < intSize; I++) {
			int o = ran.nextInt(list.size() - 1);
			if (null != list.get(o) && intSize >= 0) {
				System.out.println(list.get(o));
				list.remove(o);
				intSize--;
			} else {
				continue;
			}
		}

 

分享到:
评论
2 楼 _橙子 2010-03-16  

  • List list = Arrays.asList(a);
  • List arrayList = new ArrayList(list);


使用了asList方法后如果要remove集合里面的元素必须先再转一遍
1 楼 _橙子 2010-03-16  
贴上能运行的

public void getInt() {
		Integer[] a = new Integer[] { 1, 2, 3, 4, 5, 5, 6, 33, 15, 95, 885, 45,
				1, 5, 88, 65, 29, 46, 25, 84, 52 };
		//System.out.println(a.length);
		List list = Arrays.asList(a);
		List arrayList = new ArrayList(list);
		int o = 1;
		Random ran = new Random();
		int intSize = a.length;
		int s = 0;
		for (int i = 0; i < a.length; i++) {
			s++;
			System.out.println("循环了" + s + "次");
			if ((intSize - 1) != 0) {
				o = ran.nextInt(intSize - 1);
			}
			if (null != list.get(o) && intSize >= 0) {
				System.out.println(arrayList.get(o));
				arrayList.remove(o);
				intSize--;
			} else {
				intSize++;
				continue;
			}
		}
	}

相关推荐

    php 数组随机取值的简单实例

    在PHP编程中,经常需要从数组中随机选取一个或多个元素,这在很多...通过上述讲解,相信大家已经对PHP中的数组随机取值有了一个比较清晰的了解。通过灵活运用array_rand()函数,可以解决很多需要随机选取元素的场景。

    19【SV精通4】随机约束分布_约束块控制_数组约束_随机控制.zip

    通过定义变量的约束,我们可以控制随机数生成器的输出,确保生成的值符合设计要求。例如,可以约束一个变量在特定范围内取值,或者确保两个变量之间的某种关系。 接下来是约束块,它是定义随机化约束的主要结构。`...

    java利用一维数组统计随机数的个数

    定义一个一维数组,其中存储随即生成的1000个1至100以内的整数,统计每一个整数出现的次数

    php 从一个数组中随机的取出若干个不同的数实例

    比如,使用`rand()`函数来生成随机数,该函数返回随机选取的两个指定范围内的数中的一个。还需要注意`count()`函数的使用,它用于获取数组的长度,这是在循环控制中非常重要的一个操作。此外,通过引用传递变量给...

    python生成多个只含0,1元素的随机数组或列表的实例

    数组中的每个元素都是从0(包括)到2(不包括)这个区间随机选择的,由于范围较小,因此只有0和1两个可能的取值。 如果我们希望生成一个具有多个维度的数组,可以通过提供一个元组来指定数组的形状。例如,生成一个...

    随机生成代码

    此描述强调了程序的主要功能是生成随机数,并且通过这种方式让初学者更好地理解数组这一概念。通过观察随机数在数组中的分布,初学者可以更直观地理解数组的基本用法和特性。 #### 三、代码解析 ```c #include #...

    C# 随机生成汉字 随机生成汉字

    创建了一个`Random`对象,用于生成随机数。 接下来的循环实现了对每一个汉字的字节进行随机生成: ```csharp for (int i = 0; i ; i++) ``` 对于每个汉字,代码首先随机生成两个十六进制数字作为第一个字节的组成...

    javascript实现随机读取数组的方法

    首先,要实现随机读取数组中的元素,基本思路是生成一个随机数,这个随机数的取值范围要与数组的索引范围对应。在JavaScript中,我们可以使用`Math.random()`函数生成一个[0, 1)区间的随机浮点数,然后将其转换为数...

    Matlab(mathworks.com) 随机数生成方法.txt

    % 生成一个取值范围为[0, 6]的均匀分布随机数 R = unifrnd(0, 6, 1, 6); % 生成6个这样的随机数 ``` #### 16. Weibull分布随机数生成 Weibull分布是一种在可靠性工程和生存分析中广泛使用的概率分布。在MATLAB中,...

    Vue通过for循环随机生成不同的颜色或随机数的实例

    在Vue.js中,有时我们需要为元素动态生成...同样的思路也可以应用于生成随机数,只需要将颜色生成逻辑替换为生成随机数的代码即可。这种方法对于创建动态、多变的用户界面非常有用,可以增加用户体验的趣味性和多样性。

    6-2_chiefsh6_labview_随机数波形图_

    打开这个VI,你可以查看并理解整个过程,包括如何生成随机数、如何创建数组、如何配置波形图表,以及如何更新图表显示。 通过这个项目,学习者不仅可以掌握LabVIEW的基础知识,还能深入了解如何在实际应用中生成和...

    JS随机洗牌算法之数组随机排序

    具体到实现代码,函数中使用了for循环以及Math.random()函数来生成随机数。Math.random()函数会生成一个0到1之间的随机浮点数(不包括1),通过乘以当前索引加1,并使用Math.floor()函数取整,得到一个介于0到当前...

    Java实现按权重随机数

    然后,生成一个随机数,该随机数对应数组中的某个位置,从而选择相应的元素。这种方法的缺点是占用大量内存,特别是当权重较大时。 2. **累积权重法**:创建一个累积权重数组`W[i]`,其中`W[i]`表示前`i`个元素的...

    C#利用Random得随机数求均值、方差、正态分布的方法

    总结来说,C#中利用`Random`生成随机数并进行统计分析,可以有效地模拟各种随机现象,进行数据分析。理解并熟练运用这些方法对于开发涉及概率和统计的C#应用程序至关重要。在实际应用中,可能还需要考虑其他因素,...

    numpy中生成随机数的几种常用函数(小结)

    在Python的科学计算库NumPy中,生成随机数是一项常用的操作,这在模拟、建模以及数据生成等任务中尤其重要。本篇文章将详细介绍NumPy中生成随机数的几种常见函数,帮助读者理解和掌握这些功能。 1. **生成指定形状...

    课堂随机提问程序

    这样,randomIndex就会在0到studentsCount-1之间随机取值,可以用来代表被选中的学生编号。 为了实现滚动效果,可以使用循环和延时函数。在C++中,可以使用库来实现精确的延时。例如,以下代码将延时1秒: ```cpp #...

    Java程序设计课程实验4-数组

    4. 随机生成不重复的整数:Java的`java.util.Random`类可以生成随机数,通过设定范围和排除重复,可以生成[0-n)之间的不重复整数。 (二) 实验涉及的知识点: 1. 数组的定义:理解数组的基本语法,包括声明、初始化...

    php对数组内元素进行随机调换的方法

    8. 从数组中随机取值:可以使用`array_key_exists()`或`in_array()`检查随机生成的键是否存在于数组中,确保取出的值有效且唯一。 以上就是关于PHP中对数组内元素进行随机调换的详细说明,希望这些信息能帮助你更好...

    11查找数组最小值,并将数组扩容成新数组.docx

    1. **随机生成一个包含10个元素(每个元素的取值范围为0到100之间)的整型数组**。 2. **找出该数组中的最小值**。 3. **将原数组扩容至11个元素的新数组**。 4. **在新数组中,将最小值置于第一个位置**。 这个...

Global site tag (gtag.js) - Google Analytics