不重复的随机数问题
前言
对于随机数的运用,在开发中经常会用到。有时需要生成不重复的定范围定总量的随机数,比如1~20,需要打乱的1~20中的10个数,那到底怎么做呢?
一、不重复的随机数
我们知道,直接用random会有重复的数字,想要避免重复,可以用到set集合的特性。
import java.util.HashSet;
import java.util.Random;
import java.util.Set;public class SetDemo {static Random random;public static void main(String[] args) {Set set=new HashSet<>();random=new Random();while(set.size()<10){int a= random.nextInt(20)+1;if(!set.contains(a)){set.add(a);}}for(Integer integer:set){System.out.println(integer);}}}
这正是用到了Set集合里的元素不重复的特性。
二.不重复的字符
既然不重复的数字已经实现了,那如果需要打乱的不重复的字符或字符串怎么办呢?以下是想到的两种可行的方法。希望对大家有帮助。
方法一,通过Set集合中的元素无序的特性。
/**通过add字符串一个字符一个字符的往set集合里面添加元素* */public static Set getCharaterWay2(){Set set=new HashSet<>();String add=" 冂一一" ;for(int i=0;i

注: 字符串中少了个'一',这正是set集合不能存储重复元素造成的,而那个丢失的‘一’位置变为了“ ”。
方法二,通过Collections.shuffle()方法打乱ArranyList集合的元素
public static ArrayList getCharater(){ArrayList< String> arrayList=new ArrayList();String add="冂一一sheyrteewdgfhgjhkuky";for(int i=0;i

可以看到,相同的字符依然存在,没有丢失。如果想要在字符串总量一定且含有重复字符的话,可以用这种方法。
今日小结:线性代数:第二讲
英语单词之间:23day,
恬静语法简单句
阅读:《内在动机》
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
