-
2022-03-20 17:38:13
说明:
1、默认生成随机数100以内(可以修改)
2、默认生成5个不重复的随机数放入数组(可以修改)
源代码如下:
import java.util.Random; public class Text { public static void main(String[] args) { //创建随机数对象 Random random=new Random(); //创建一个包含5个元素的数组 int[] arr=new int[5]; //元素默认为-1 for (int i = 0; i < arr.length; i++) { arr[i]=-1; } //下标 int indext=0; while(indext<arr.length){ //是否重复 boolean finth=true; //生成一个随机数100以内可以修改 int a=random.nextInt(101); //遍历数组 for (int i = 0; i < arr.length; i++) { //判断是否有重复 if(arr[i]==a){ finth=false; } } //若没有重复则赋值 if(finth){ arr[indext++]=a; } } //遍历输出 for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]); } } }
更多相关内容 -
java生成字母数字组合的随机数示例 java生成随机数
2020-09-04 16:44:23主要介绍了java生成字母数字组合的随机数的示例,大家参考使用吧 -
java生成不重复的随机数
2021-11-29 13:03:28import java.util.ArrayList; import java.util.List; public class ListDemo { public static void main(String[] args) { for(int i = 0;i<10;i++){ int num = (int)(Math.random()*10+1); System.out....1.使用List类型容器
import java.util.ArrayList; import java.util.List; public class ListDemo { public static void main(String[] args) { for(int i = 0;i<10;i++){ int num = (int)(Math.random()*10+1); System.out.println(num); } System.out.println("===================================="); List<Integer> list = new ArrayList<>(); while(true){ int num = (int)(Math.random()*10+1); //判断元素是否存在 if(!list.contains((num))){ list.add(num); } if(list.size()==10){ break; } } for (Integer i:list){ System.out.println(i); } } }
使用List类型容器生成不重复的随机数时,需要使用List自带的contains方法来判断元素是否重复。
但是Set类型容器不允许元素重复,所以使用Set类型容器会更加简单。
import java.util.HashSet; import java.util.Set; public class SetDemo { public static void main(String[] args) { Set<Integer> set = new HashSet<>(); while (true){ int num = (int)(Math.random()*10+1); set.add(num);//Set类型元素不允许有重复元素 if(set.size()==10){ break; } } for (Integer i:set){ System.out.println(i); } } }
结果看到确实生成了不重复的10个元素,但是结果却是有序的。但其实HashSet类并不会提供排序功能,只是Integer类型HashCode方法是直接返回值本身,所以结果是有序的。如果生成随机数的范围和容器大小不同时可能更加符合需求。
import java.util.HashSet; import java.util.Set; public class SetDemo { public static void main(String[] args) { Set<Integer> set = new HashSet<>(); while (true){ int num = (int)(Math.random()*10+1); set.add(num);//Set类型元素不允许有重复元素 if(set.size()==5){ break; } } for (Integer i:set){ System.out.println(i); }
-
java生成不重复的随机数方法总结
2021-02-12 10:39:22(相关视频课程推荐:java视频教程)为了更好地理解这个题意,我们先来看下具体内容:生成一个1-100的随机数组,但数组中的数字不能重复,即位置是随机的,但数组元素不能重复。在这里呢,没有给我们规定数组的长度,...本文给大家介绍如何在JAVA中实现随机无重复数字的功能。(相关视频课程推荐:java视频教程)
为了更好地理解这个题意,我们先来看下具体内容:生成一个1-100的随机数组,但数组中的数字不能重复,即位置是随机的,但数组元素不能重复。
在这里呢,没有给我们规定数组的长度,我们可以让它是1-100之间的任意长度。
接下来让我们看一下几种实现方法并对这几种方法作个对比。
通常我们会使用ArrayList或数组来实现,先来看下ArrayList实现过程,如下面代码所示:import java.util.ArrayList;
import java.util.Random;
/**
* 使用ArrayList实现
* @Description:
* @File: Demo.java
* @Date 2012-10-18 下午06:16:55
* @Version V1.0
*/
public class Demo {
public static void main(String[] args) {
Object[] values = new Object[20];
Random random = new Random();
ArrayList list = new ArrayList();
for(int i = 0; i < values.length;i++){
int number = random.nextInt(100) + 1;
if(!list.contains(number)){
list.add(number);
}
}
values = list.toArray();
// 遍历数组并打印数据
for(int i = 0;i < values.length;i++){
System.out.print(values[i] + "\t");
if(( i + 1 ) % 10 == 0){
System.out.println("\n");
}
}
}
}
使用数组实现的过程如下所示代码:import java.util.Random;
/**
* 使用数组实现
* @Description:
* @File: Demo4.java
* @Package None
* @Author Hanyonglu
* @Date 2012-10-18 下午06:27:38
* @Version V1.0
*/
public class Demo4 {
public static void main(String[] args) {
int[] values = new int[20];
Random random = new Random();
for(int i = 0;i < values.length;i++){
int number = random.nextInt(100) + 1;
for(int j = 0;j <= i;j++){
if(number != values[j]){
values[i]=number;
}
}
}
// 遍历数组并打印数据
for(int i = 0;i < values.length;i++){
System.out.print(values[i] + "\t");
if(( i + 1 ) % 10 == 0){
System.out.println("\n");
}
}
}
}
上面这两个实现过程效率比较低的。因为在每次添加时都要去遍历一下当前列表中是否存在这个数字,时间复杂度是O(N^2)。我们可以这样思考一下:既然涉及到无重复,我们可以想一下HashSet和HashMap的功能。
HashSet实现Set接口,Set在数学上的定义就是无重复,无次序的集合。而HashMap实现Map,也是不允许重复的Key。这样我们可以使用HashMap或HashSet来实现。
在使用HashMap实现时,只需要将它的key转化成数组就Ok了,如下代码:import java.util.HashMap;
import java.util.Iterator;
import java.util.Random;
import java.util.Map.Entry;
/**
* 使用HashMap实现
* @Description:
* @File: Demo.java
* @Package None
* @Author Hanyonglu
* @Date 2012-10-18 下午06:12:50
* @Version V1.0
*/
public class Demo {
public static void main(String[] args) {
int n = 0;
Object[] values = new Object[20];
Random random = new Random();
HashMap hashMap = new HashMap();
// 生成随机数字并存入HashMap
for(int i = 0;i < values.length;i++){
int number = random.nextInt(100) + 1;
hashMap.put(number, i);
}
// 从HashMap导入数组
values = hashMap.keySet().toArray();
// 遍历数组并打印数据
for(int i = 0;i < values.length;i++){
System.out.print(values[i] + "\t");
if(( i + 1 ) % 10 == 0){
System.out.println("\n");
}
}
// Iterator iter = hashMap.entrySet().iterator();
// // 遍历HashMap
// while (iter.hasNext()) {
// Entry entry = (Entry)iter.next();
// int key = entry.getKey();
// n++;
//
// System.out.print(key + "\t");
//
// if(n % 10 == 0){
// System.out.println("\n");
// }
// }
}
}
由于HashSet和HashMap的关系太近了,HashSet在底层就是用HashMap来实现的,只不过没有Value的集合,只有一个Key的集合,所以也可使用HashSet来实现,如下代码:import java.util.HashSet;
import java.util.Random;
/**
* 使用HashSet实现
* @Description:
* @File: Test.java
* @Package None
* @Author Hanyonglu
* @Date 2012-10-18 下午06:11:41
* @Version V1.0
*/
public class Test {
public static void main(String[] args) {
Random random = new Random();
Object[] values = new Object[20];
HashSet hashSet = new HashSet();
// 生成随机数字并存入HashSet
for(int i = 0;i < values.length;i++){
int number = random.nextInt(100) + 1;
hashSet.add(number);
}
values = hashSet.toArray();
// 遍历数组并打印数据
for(int i = 0;i < values.length;i++){
System.out.print(values[i] + "\t");
if(( i + 1 ) % 10 == 0){
System.out.println("\n");
}
}
}
}
这样实现效率稍微好些。如果给我们限定了数组的长度,只需要变换下for循环,设置成whlie循环就可以了。如下所示:import java.util.HashSet;
import java.util.Random;
/**
* 使用HashSet实现
* @Description:
* @File: Test.java
* @Package None
* @Author Hanyonglu
* @Date 2012-10-18 下午05:11:41
* @Version V1.0
*/
public class Test {
public static void main(String[] args) {
Random random = new Random();
Object[] values = new Object[20];
HashSet hashSet = new HashSet();
// 生成随机数字并存入HashSet
while(hashSet.size() < values.length){
hashSet.add(random.nextInt(100) + 1);
}
values = hashSet.toArray();
// 遍历数组并打印数据
for(int i = 0;i < values.length;i++){
System.out.print(values[i] + "\t");
if(( i + 1 ) % 10 == 0){
System.out.println("\n");
}
}
}
}
以上几种相比较而言,使用HashMap的效率是比较高的,其实是HashSet,再次是数组,最后是ArrayList。如果我们生成10000个数据将会发现,使用HashMap花费时间是:0.05s,HashSet是0.07s,数组是:0.20s,而ArrayList是0.25s。有兴趣的可以设置下时间查看一下。
当然了,除了使用HashMap实现外,还有其它高效的方法。比如,我们可以把1-100这些数字存储在一个数组中,然后在for循环中随机产生两个下标,如果这两个下标不相等的话,可以交换数组中的元素,实现过程如下所示:import java.util.Random;
/**
* 随机调换位置实现
* @Description:
* @File: Demo4.java
* @Package None
* @Author Hanyonglu
* @Date 2012-10-18 下午06:54:06
* @Version V1.0
*/
public class Demo4 {
public static void main(String[] args) {
int values[] = new int[100];
int temp1,temp2,temp3;
Random r = new Random();
for(int i = 0;i < values.length;i++){
values[i] = i + 1;
}
//随机交换values.length次
for(int i = 0;i < values.length;i++){
temp1 = Math.abs(r.nextInt()) % (values.length-1); //随机产生一个位置
temp2 = Math.abs(r.nextInt()) % (values.length-1); //随机产生另一个位置
if(temp1 != temp2){
temp3 = values[temp1];
values[temp1] = values[temp2];
values[temp2] = temp3;
}
}
// 遍历数组并打印数据
for(int i = 0;i < 20;i++){
System.out.print(values[i] + "\t");
if(( i + 1 ) % 10 == 0){
System.out.println("\n");
}
}
}
}
更多java相关文章请关注java基础教程。
-
生成不重复随机数 java
2021-02-12 10:39:21生成不重复随机数 javajava生成随机数可以使用Math类中的方法。不随机可以使用List进行判断存储。(推荐教程:java教程 )1 . 调用java.lang下面Math类中的random()方法产生随机数新建一个文件后缀名为java的文件,...生成不重复随机数 java
java生成随机数可以使用Math类中的方法。不随机可以使用List进行判断存储。(推荐教程:java教程 )
1 . 调用java.lang下面Math类中的random()方法产生随机数
新建一个文件后缀名为java的文件,文件名取为MyRandom,该类中编写如下的代码:
public class MyRandom {
public static void main(String[] args) {
int radom = (int)(Math.random()*10);
System.out.println(radom);
}
}
其中Math.random() //产生0~1之间的一个随机小数。
产生一个0~9之间的整数为:(int)(Math.random()*10);
产生一个1~10之间的整数则可以写着:(int)(Math.random()*10 + 1);
以此类推:产生一个0~n之间的数就应写作:Math.random()*n;
例如:生成一个int类型的数组,长度为50的,并向其中随即插入0-50之间的数,并且不能重复。
2. 用List的contains方法进行重复判断
public class MyRandom {
public static void main(String[] args) {
int[] intRandom = new int[50];
List mylist = new ArrayList(); //生成数据集,用来保存随即生成数,并用于判断
Random rd = new Random();
while(mylist.size() < 50) {
int num = rd.nextInt(51);
if(!mylist.contains(num)) {
mylist.add(num); //往集合里面添加数据。
}
}
for(int i = 0;i
intRandom[i] = (Integer)(mylist.get(i));
}
}
}
以上就是生成不重复随机数 java的详细内容,希望对你有所帮助。
-
Java实现生成n个不重复的随机数
2021-03-23 19:45:37本文实例为大家分享了java实现生成n个不重复的随机数的具体代码,供大家参考,具体内容如下需求:根据min和max,生成n个不重复的随机数。(注:范围[min,max],n <= (max - min +1))思路:0)、把从min到max的可能... -
java 生成一组不重复的随机数
2016-01-18 21:10:10引出这个问题的是,是我在学习设计拼图游戏中出现的,拼图游戏开始的时候,图是散乱的,比如拼图游戏被分成了8*4 共32块,那么32块图对应着32个数,而若要使每次开始前的排列顺序不一致,就需要产生32个随机数。... -
Java中如何生成6个不重复的随机数一次性成功!
2020-08-08 09:24:59在使用Java生成随机数时,这里有两种方式: ①是使用Set的不可重复性,来生成的,下面我们来看代码: public class RandomTest{ public static void main(String[] args) { Set<Integer> set = new HashSet&... -
Java生成不重复的随机数列表
2021-06-01 19:02:31import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Random;... // 需求:生成范围为[0,100)的10个随机数 System.out.println(getRandomNumList(10, 0, 100)); -
java生成随机数(字符串)示例分享
2020-09-04 13:12:21主要介绍了java生成随机数(字符串)示例分享,需要的朋友可以参考下 -
Java产生不重复的随机数
2022-02-13 10:22:34public class HelloWorld { public static void main(String[] args) { Set<Integer>set=new HashSet<>();//数据不会排序 Set<Integer>treeset=new TreeSet<... while (set.size()& -
java生成十个不重复的随机数
2008-11-11 09:52:15java生成十个不重复的随机数,要求不重复 -
生成10个不重复的随机数存放在数组中(java实现)
2022-04-18 11:06:06解题思路:由于数组初始化时全部为0,为了区分,我们先将数组初始化为-1,然后利用循环,利用一个变量存放生成的随机数,每生成一个随机数遍历此输出,如果有重复的返回重新生成。我们如何实现出现重复的数字,返回... -
java生成不重复的6位随机数(可指定位数,指定纯数组、字母或混合)
2020-08-27 11:24:406位数字理论上应该是100W变换,超过100w肯定是重复的 直接上代码吧: 方法: /** * 获取数组不存在的6位数取件码 * @return */ private String getPickupCode(List<String> list){ String sixstr = ... -
java 生成一组不同的随机数(不重复)
2017-03-22 20:11:39* 生成一组不同的随机数 * arr{1,2,3,4,5,6} * 比如随机生成了3 取出arr[3]=3,然后将arr{1,2,6,4,5,3} 数组模拟长度减1 * 比如随机生成了3 取出arr[3]=6,然后将arr{1,2,5,4,6,3} 数组模拟长度减1 * @... -
[Java]不重复随机数生成简易算法
2016-03-17 11:14:32java不重复随机数算法 -
Java 生成任意位数永不重复的随机数策略实现
2017-02-10 14:52:58在项目中遇到客户一个需求,ID的生成策略:长度8位,用户在知道自己的ID(如:10000018)后,不能通过ID来推测相关信息,如用户...生成一个装有1-99999999数值的数组 将数值内的值随机打乱 将数值的值分开保存到不同 -
php怎么生成不重复随机数
2021-04-29 05:43:53php怎么生成不重复随机数php生成不重复随机数的方法:首先利用range函数创建一个包含指定范围的元素的数组;然后利用shuffle函数把数组中的元素按随机顺序重新排列;最后取出数组中的一段元素即可。实现原理:将数组... -
Java随机生成一7个(1-30之间)的不重复的随机数
2021-04-18 09:38:36Java随机生成一7个(1-30之间)的不重复的随机数1、要求 2、代码import java.util.HashSet;import java.util.Random;import java.util.Set;/**** @author com**/public class HashSetTest {public static void main... -
javascript获取不重复的随机数的方法比较
2020-12-09 18:08:08[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 不重复的随机数方案2:297毫秒 但是方案1采用了slice方法,此方法重新生成数组,会大量占用内存和cpu运算, 效率很低,所以改良一下,从原始数组取出一个数, 然后... -
java 产生一组不重复的随机数
2014-10-07 07:12:00产生一个随机数很简单,可以产生一组不重复的随机数应该怎么做呢,今天写程序用到了这个功能。下面是几行关键的代码: [java] view plaincopy Random random = new Random (); ... -
Java-生成五个不重复的随机数放进一维数组中
2022-05-03 16:24:591、Random生成随机数的方法。 2、数组的遍历。 3、for循环,while循环; 一、代码实现和原理 import java.util.Random; public class RandomTest01 { public static void main(String[] args) { //计数器为了记录... -
js高效生成一组随机数(不重复)
2019-06-27 21:03:27昨天做了这么一个功能:在3*3的表格里面生成9个1-9的随机数,并且9个数字不重复,由于时间紧张,只简单的实现了功能,部分代码如下: //Java script语言 var nums=[]; function getNum(){ var s; do{ s=Math.... -
利用HashSet生成一组不重复的随机数
2021-03-18 12:29:59publicclassRandomMaker{//参数//min:随机数的最小值//max:随机数的最大值//n:生成随机数的个数//set:存放生成的随机数的集合//int型也可更改为float、doublepublicvoidrandomSet(intmin,intmax,intn,HashSetset... -
代码如何生成不重复的随机数
2021-05-23 12:28:30C语言如何产生不重复的随机数a[52]={302,303,304,305,306,307,308,309,310,311,312... 比如说随机0-8,生成一个随机8位数组且数组内各项不重复; 例: intarray[8]; intarrayIndex[8]={0,0,0,0,0,0,0,0}; intk=0; sr... -
Java 中生成一组不重复随机整数的简便方法
2021-09-09 06:29:24利用 Set 集合不能存放重复元素的特性 package util; import java.util.HashSet; import java.util.Random; import java.util.Set; /** * @author ajun * Date 2021/7/14 * @version 1.0 * 工具类 */ public... -
Java获取随机数获取制定范围指定个数不重复的随机数
2021-03-01 09:52:521 importjava.util.HashSet;2 importjava.util.Random;34 public classGenerateRandomNumber {56 public static voidmain(String[] args) {7 //一、JAVA中生成随机数的方式8 //①9 //int randomNumb...