随机数与枚举
来源:互联网 发布:如何在知乎添加话题 编辑:程序博客网 时间:2024/05/21 06:57
构建随机数生成器对象:Random rand = new Random();
构建方法使用了long型的随机数种子:Random rand2 = new Random(12345L);
生成0~100(不含100,即0~99)的int型随机数:int ir = rand.nextInt(100);
1.抽取10个不考虑重复情况的随机数:
- package 随机数;
- import java.util.*;
- public class Randomx {
- public static void main(String[] args) {
- Random rand = new Random();
- int nums[] = new int[10];
- for(int i=0;i<10;i++)
- {
- nums[i]=rand.nextInt(100)+1;
- }
- Arrays.sort(nums);
- System.out.println("1~100范围内的10个随机数如下:");
- System.out.println(Arrays.toString(nums));
- }
- }
- /*
- 输出如下:
- 1~100范围内的10个随机数如下:
- [3, 20, 26, 32, 40, 50, 61, 90, 97, 97]
- */
2.因此要生成10个相互不重复的随机数,必须在每次生成随机数时,把它一次与保存在数组中的各个随机数比较,如果重复,则再调用一次nextInt方法重新生成一次。
- package 随机数;
- import java.util.*;
- public class Randomx {
- public static void main(String[] args) {
- Random rand = new Random();
- int nums[] = new int[10];
- for(int i=0;i<10;i++)
- {
- //循环标记
- whiletag:while(true)
- {
- int randNum=rand.nextInt(100)+1;
- for(int j=0;j<i;j++)
- {
- //相等则继续循环
- if(randNum==nums[j])
- {
- continue whiletag;
- }
- }
- //直到不重复时,将随机数保存到数组
- nums[i]=randNum;
- break whiletag;
- }
- }
- Arrays.sort(nums);
- System.out.println("1~100范围内的10个随机数如下:");
- System.out.println(Arrays.toString(nums));
- }
- }
- /*
- 输出如下:
- 1~100范围内的10个随机数如下:
- [5, 15, 20, 55, 72, 83, 87, 90, 95, 100]
- */
3.定义抽奖方法,含有排除号码(例如抽了1等奖防止重复)
- package 抽奖_排除;
- import java.util.Arrays;
- import java.util.Random;
- class Raffle2 {
- //抽号方法,有4个参数:起始号,终止号,抽奖个数,排除号码(可变参数)
- public static int[] raffleNums(int from,int to,int amount,int...exclusion)throws Exception{
- if((to-from+1)-exclusion.length<amount){
- throw new Exception("抽取范围内的数量必须不小于要抽取的个数");
- }
- Random rand=new Random();
- int nums[]=new int[amount];
- for(int i=0;i<amount;i++){
- whiletag:while(true)
- {
- int randNum=rand.nextInt(to-from+1)+from;
- for(int j=0;j<i;j++)
- {
- if(randNum==nums[j])
- {
- continue whiletag;
- }
- }
- for(int k=0;k<exclusion.length;k++)
- {
- if(randNum==exclusion[k])
- {
- continue whiletag;
- }
- }
- nums[i]=randNum;
- break whiletag;
- }
- }
- return nums;
- }
- }
- public class Raffle
- {
- public static void main(String[] args) {
- try{
- System.out.println("抽取20~40范围内6个数,排除25和35,结果如下:");
- int nums[]=Raffle2.raffleNums(20, 40, 6, 35,25);
- Arrays.sort(nums);
- System.out.println(Arrays.toString(nums));
- System.out.println("抽取1~10范围内5个数,排除2,3,4,结果如下:");
- int nums2[]=Raffle2.raffleNums(1, 10, 5, 2,3,4);
- Arrays.sort(nums2);
- System.out.println(Arrays.toString(nums2));
- System.out.println("抽取101~200范围内8个数,结果如下:");
- int nums3[]=Raffle2.raffleNums(101, 200, 8);
- Arrays.sort(nums3);
- System.out.println(Arrays.toString(nums3));
- }
- catch(Exception e){
- System.out.println("异常:"+e.getMessage());
- }
- }
- }
- /*
- 输出结果如下:
- 抽取20~40范围内6个数,排除25和35,结果如下:
- [20, 21, 23, 24, 30, 31]
- 抽取1~10范围内5个数,排除2,3,4,结果如下:
- [5, 6, 8, 9, 10]
- 抽取101~200范围内8个数,结果如下:
- [104, 124, 137, 143, 147, 151, 161, 180]
- */
0 0
- 随机数与枚举
- 随机数种子与随机数
- 随机数与伪随机数
- 伪随机数与matlab随机数
- (6)随机数、常量、枚举、结构、数组
- 21.数字_随机数_枚举
- 枚举值与枚举类
- 生成随机数与字母
- Qt 计时器与随机数
- HASH 与 随机数
- 随机数与Random类
- 随机数与随机种子
- 随机数生成与恢复
- 生日悖论与随机数
- Qt 计时器与随机数
- 时间与随机数
- 随机数 与无穷大
- 随机数(rand与srand)
- 《30天自制操作系统》学习笔记——第七天
- rtsp
- 学点Unicode又不会死——Unicode的流言终结者和编码大揭秘
- Linux下学习DB2命令的笔记
- Spring.Net 面向切面AOP
- 随机数与枚举
- 对于VC++报错:fatal error C1001: INTERNAL COMPILER ERROR
- tslib1.4移植简单记录
- 电信采集项目的一个小总结
- Hadoop 伪分布模式下关机后,fs端口连接不上问题解决方案
- Android opengl 2d绘图/贴图详细教程
- 关于“IOS6_内置字体库下载”的文章网址
- 文件读写
- UITextView:定制选中文字的菜单和用代码选择文字