生成100个随机数并求最大数和最小数JAVA语言实现

合集下载

如何产生1-100之间的100个不重复的随机数

如何产生1-100之间的100个不重复的随机数

如何产⽣1-100之间的100个不重复的随机数如何产⽣1-100之间的100个不重复的随机数如果这是你是第⼀次看到这个题⽬,也许你的想法有很多。

1:⾸先从原始数组中随机选择⼀个数字,然后将该数字从数组中剔除,再随记选,再剔除,重复99次,就解决了。

我们知道从数组中剔除⼀个元素的复杂度为O(N),那么随机选取n个数字,它的复杂度就是O(N2)了。

2:⽤hash作为中间过滤层,因为在数组中,我们采⽤随机数的话,也许随机数在多次随机中可能会有重复,所以需要⽤hash来判断⼀下,如果在hash中重复,则继续产⽣随机数,直到不重复为⽌,当然这个复杂度就不好说了,得要看随机数随机不随机了,好的话,O(N)搞定,不⾛运的话⽆上限~3:就像标题说的⼀样,很多问题我们都能在现实⽣活中找到写照,毕竟很多东西是来源于现实,⼜抽象于现实,⽐如这个题⽬在现实⽣活中, 可以对应到的就是“洗扑克牌”,在算法中也叫“洗牌原理”,我们知道洗扑克牌的⽅式就是随机的交换扑克牌的位置,⼜叫做"切牌",当你切了很多次后,我们的扑克牌就可以认为是⾜够乱了,复杂度也就变成了O(N),⽤代码实现就是这样的。

<1> 先有序的⽣成52张牌,然后有序的放到数组中。

<2>从1-52中随机的产⽣⼀个数,然后将当前次数的位置跟随机数的位置进⾏交换,重复52次,我们的牌就可以认为⾜够乱了。

4:代码实现<1> ⾸先定义牌的数据结构,定义⼀个“花⾊”和“数字”1 /// <summary>2 ///具体扑克牌3 /// </summary>4 public class Card5 {6 public char suit;78 public string num;9 }<2>有序的⽣成52张牌1 /// <summary>2 ///开牌3 /// </summary>4 public void NewCard()5 {6 for (int i = 1; i <= card.Length; i++)7 {8 var suit = ((i - 1) / 13) + 3;9 var num = i % 13;1011 string temp;1213 switch (num)14 {15 case 1: temp = "A"; break;16 case 11: temp = "J"; break;17 case 12: temp = "Q"; break;18 case 0: temp = "K"; break;19 default: temp = num.ToString(); break;20 }2122 card[i - 1] = new Card()23 {24 suit = (char)suit,25 num = temp26 };27 }28 }<3> 然后就是切牌了,刚才也说了思路,就是拿随机数的位置与当前i的位置进⾏交换,不过⼀说到交换就想起了“冒泡排序”,可能被毒害太 深了(┬_┬),不知道你感觉到了没。

Java中Random随机数

Java中Random随机数

Java中Random随机数java中⼀般有两种随机数,⼀个是Math中random()⽅法,⼀个是Random类。

⼀、Math.random()随即⽣成0<=x<1的⼩数。

实例:如何写,⽣成随机⽣成出0~100中的其中⼀个数呢?Math.random()返回的只是从0到1之间的⼩数,如果要50到100,就先放⼤50倍,即0到50之间,这⾥还是⼩数,如果要整数,就强制转换int,然后再加上50即为50~100.最终代码:(int)(Math.random()*50) + 50⼆、Random类Random random = new Random();//默认构造⽅法Random random = new Random(1000);//指定种⼦数字在进⾏随机时,随机算法的起源数字称为种⼦数(seed),在种⼦数的基础上进⾏⼀定的变换,从⽽产⽣需要的随机数字。

相同种⼦数的Random对象,相同次数⽣成的随机数字是完全相同的。

也就是说,两个种⼦数相同的Random对象,第⼀次⽣成的随机数字完全相同,第⼆次⽣成的随机数字也完全相同。

2 、Random类中的常⽤⽅法Random 类中的⽅法⽐较简单,每个⽅法的功能也很容易理解。

需要说明的是,Random类中各⽅法⽣成的随机数字都是均匀分布的,也就是说区间内部的数字⽣成的⼏率是均等的。

下⾯对这些⽅法做⼀下基本的介绍:a 、public boolean nextBoolean()该⽅法的作⽤是⽣成⼀个随机的boolean值,⽣成true和false的值⼏率相等,也就是都是50%的⼏率。

b 、public double nextDouble()该⽅法的作⽤是⽣成⼀个随机的double值,数值介于[0,1.0)之间,这⾥中括号代表包含区间端点,⼩括号代表不包含区间端点,也就是0到1之间的随机⼩数,包含0⽽不包含1.0。

c 、public int nextInt()该⽅法的作⽤是⽣成⼀个随机的int值,该值介于int的区间,也就是-2的31次⽅到2的31次⽅-1之间。

java中随机生成数字的方法

java中随机生成数字的方法

Java中随机生成数字的方法在Java编程中,经常需要生成随机数字。

随机数字的生成可以用于各种场景,例如游戏开发、密码生成、数据模拟等。

本文将介绍Java中常用的几种随机生成数字的方法,并提供示例代码和解释。

Random类Java提供了Random类来生成伪随机数。

Random类的实例可以通过调用其方法来生成不同类型的随机数。

1. 生成整数使用Random类的nextInt()方法可以生成一个范围内的随机整数。

以下是一个示例代码:import java.util.Random;public class RandomExample {public static void main(String[] args) {Random random = new Random();int randomNumber = random.nextInt(100); // 生成0到99之间的随机整数System.out.println(randomNumber);}}上述代码创建了一个Random对象,然后调用nextInt(100)方法来生成0到99之间的随机整数。

运行程序会输出一个不同的整数。

2. 生成浮点数使用Random类的nextDouble()方法可以生成0到1之间(包括0但不包括1)的伪随机浮点数。

以下是一个示例代码:import java.util.Random;public class RandomExample {public static void main(String[] args) {Random random = new Random();double randomNumber = random.nextDouble(); // 生成0到1之间(包括0但不包括1)的随机浮点数System.out.println(randomNumber);}}上述代码创建了一个Random对象,然后调用nextDouble()方法来生成0到1之间的随机浮点数。

Java中产生随机数

Java中产生随机数

一、利用random方法来生成随机数。

在Java语言中生成随机数相对来说比较简单,因为有一个现成的方法可以使用。

在Math类中,Java语言提供了一个叫做random的方法。

通过这个方法可以让系统产生随机数。

不过默认情况下,其产生的随机数范围比较小,为大于等于0到小于1的double型随机数。

虽然其随机数产生的范围比较小,不能够满足日常的需求。

如日常工作中可能需要产生整数的随机数。

其实,只要对这个方法进行一些灵活的处理,就可以获取任意范围的随机数。

如我们可以先通过random方法生成一个随机数,然后将结果乘以10。

此时产生的随机数字即为大于等于0小于10的数字。

然后再利用Int方法进行转换(它会去掉小数掉后面的数字,即只获取整数部分,不是四舍五入)。

最后即可获取一个0到9的整数型随机数字。

其实现方法很简单,就是对原有的random方法按照如下的格式进行变型:(int)(Math.Random()*10)即可。

其实我们还可以对这个方法进行扩展,让其产生任意范围内的随机数。

至需要将这个10换成n即可,如改为(int)(Math.Random()*n)。

此时应用程序就会产生一个大于等于0小与n之间的随机数。

如将n设置为5,那么其就会产生一个0到5之间的整数型的随机数。

如果将这个写成一个带参数的方法,那么只要用户输入需要生成随机数的最大值,就可以让这个方法来生成制定范围的随机数。

在Java中定义自己的工具库有时候程序员可能需要生成一个指定范围内的随机偶数或者奇数。

此时是否可以通过这个方法来实现呢?答案是肯定的。

如现在程序要需要生成一个1-100范围内的偶数。

此时该如何实现?首先,需要生成一个0到99之内的随机数(至于这里为什么是99,大家耐心看下去就知道原因了)。

要实现这个需求,很简单吧,只要通过如下语句就可以实现:i=1+(int)(Math.Random()*100)。

其中(int)(Math.Random()*99)产生0到99的整数型随机数。

史上最全的java随机数生成算法[转载]

史上最全的java随机数生成算法[转载]

史上最全的java随机数⽣成算法[转载] 1package com.zuidaima.core.util;23import java.util.Random;45public class RandomUtil {6public static final String ALLCHAR = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";7public static final String LETTERCHAR = "abcdefghijkllmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";8public static final String NUMBERCHAR = "0123456789";910/**11 * 返回⼀个定长的随机字符串(只包含⼤⼩写字母、数字)12 *13 * @param length14 * 随机字符串长度15 * @return随机字符串16*/17public static String generateString(int length) {18 StringBuffer sb = new StringBuffer();19 Random random = new Random();20for (int i = 0; i < length; i++) {21 sb.append(ALLCHAR.charAt(random.nextInt(ALLCHAR.length())));22 }23return sb.toString();24 }2526/**27 * 返回⼀个定长的随机纯字母字符串(只包含⼤⼩写字母)28 *29 * @param length30 * 随机字符串长度31 * @return随机字符串32*/33public static String generateMixString(int length) {34 StringBuffer sb = new StringBuffer();35 Random random = new Random();36for (int i = 0; i < length; i++) {37 sb.append(ALLCHAR.charAt(random.nextInt(LETTERCHAR.length())));38 }39return sb.toString();40 }4142/**43 * 返回⼀个定长的随机纯⼤写字母字符串(只包含⼤⼩写字母)44 *45 * @param length46 * 随机字符串长度47 * @return随机字符串48*/49public static String generateLowerString(int length) {50return generateMixString(length).toLowerCase();51 }5253/**54 * 返回⼀个定长的随机纯⼩写字母字符串(只包含⼤⼩写字母)55 *56 * @param length57 * 随机字符串长度58 * @return随机字符串59*/60public static String generateUpperString(int length) {61return generateMixString(length).toUpperCase();62 }6364/**65 * ⽣成⼀个定长的纯0字符串66 *67 * @param length68 * 字符串长度69 * @return纯0字符串70*/71public static String generateZeroString(int length) {72 StringBuffer sb = new StringBuffer();73for (int i = 0; i < length; i++) {74 sb.append('0');75 }76return sb.toString();77 }7879/**80 * 根据数字⽣成⼀个定长的字符串,长度不够前⾯补081 *82 * @param num83 * 数字84 * @param fixdlenth85 * 字符串长度86 * @return定长的字符串87*/88public static String toFixdLengthString(long num, int fixdlenth) {89 StringBuffer sb = new StringBuffer();90 String strNum = String.valueOf(num);91if (fixdlenth - strNum.length() >= 0) {92 sb.append(generateZeroString(fixdlenth - strNum.length()));93 } else {94throw new RuntimeException("将数字" + num + "转化为长度为" + fixdlenth95 + "的字符串发⽣异常!");96 }97 sb.append(strNum);98return sb.toString();99 }100101/**102 * 每次⽣成的len位数都不相同103 *104 * @param param105 * @return定长的数字106*/107public static int getNotSimple(int[] param, int len) {108 Random rand = new Random();109for (int i = param.length; i > 1; i--) {110int index = rand.nextInt(i);111int tmp = param[index];112 param[index] = param[i - 1];113 param[i - 1] = tmp;114 }115int result = 0;116for (int i = 0; i < len; i++) {117 result = result * 10 + param[i];118 }119return result;120 }121122public static void main(String[] args) {123 System.out.println("返回⼀个定长的随机字符串(只包含⼤⼩写字母、数字):" + generateString(10)); 124 System.out125 .println("返回⼀个定长的随机纯字母字符串(只包含⼤⼩写字母):" + generateMixString(10)); 126 System.out.println("返回⼀个定长的随机纯⼤写字母字符串(只包含⼤⼩写字母):"127 + generateLowerString(10));128 System.out.println("返回⼀个定长的随机纯⼩写字母字符串(只包含⼤⼩写字母):"129 + generateUpperString(10));130 System.out.println("⽣成⼀个定长的纯0字符串:" + generateZeroString(10));131 System.out.println("根据数字⽣成⼀个定长的字符串,长度不够前⾯补0:"132 + toFixdLengthString(123, 10));133int[] in = { 1, 2, 3, 4, 5, 6, 7 };134 System.out.println("每次⽣成的len位数都不相同:" + getNotSimple(in, 3));135 }136 }。

java中随机数random的用法

java中随机数random的用法

java中随机数random的用法Java中随机数(Random)是一个非常有用的工具,它可以用来生成随机数,从而实现一些随机化的操作。

在Java中,我们可以使用java.util.Random类来生成随机数。

下面是一些关于Java中随机数的用法。

1. 生成随机整数我们可以使用nextInt()方法来生成随机整数。

例如,下面的代码将生成一个0到99之间的随机整数:```Random random = new Random();int num = random.nextInt(100);```2. 生成随机浮点数我们可以使用nextDouble()方法来生成随机浮点数。

例如,下面的代码将生成一个0到1之间的随机浮点数:Random random = new Random();double num = random.nextDouble();```如果我们想要生成一个指定范围内的随机浮点数,可以使用下面的代码:```Random random = new Random();double num = min + (max - min) * random.nextDouble();```其中,min和max分别是指定范围的最小值和最大值。

3. 生成随机布尔值我们可以使用nextBoolean()方法来生成随机布尔值。

例如,下面的代码将生成一个随机布尔值:```Random random = new Random();boolean bool = random.nextBoolean();4. 生成随机字节数组我们可以使用nextBytes()方法来生成随机字节数组。

例如,下面的代码将生成一个长度为10的随机字节数组:```Random random = new Random();byte[] bytes = new byte[10];random.nextBytes(bytes);```5. 设置随机数种子我们可以使用setSeed()方法来设置随机数种子。

实用的随机数生成类Random:测试(随机产生100个不重复的正整数)

实用的随机数生成类Random:测试(随机产生100个不重复的正整数)

实⽤的随机数⽣成类Random:测试(随机产⽣100个不重复的正整数)实⽤的随机数⽣成类Random:测试(使⽤Random类随机⽣成100个不重复的正整数)⼀、之前我们使⽤随机数⽤的是Math类的random()⽅法:tips:产⽣随机数(0~9中任意整数)的⽅法:int random = (int)(Math.random()*10);1.商场幸运抽奖程序。

会员号的百位数字等于产⽣的随机数即为幸运会员。

public class GoodLuck{ public static void main(String[] args){ //产⽣随机数 int random = (int)(Math.random()*10); //从控制台接收⼀个4位会员号 System.out.println("我⾏我素购物管理系统>幸运抽奖\n"); System.out.print("请输⼊4位会员号:"); Scanner input = new Scanner(System.in); int custNo = input.nextInt(); //分解获得百位 int baiwei = custNo/100%10; //判断是否是会员 if(baiwei = random){ System.out.println(custNo+"是幸运客户,获精美MP3⼀个。

"); }else{ System.out.println(custNo+"谢谢您的⽀持!"); } }}⼆、其实,Math类的random⽅法的底层就是使⽤Random类实现的。

1.给构造⽅法有两种重载⽅法:Random();创建⼀个新的随机数⽣成器。

Random(long seed);使⽤单个long种⼦创建⼀个新的随机数⽣成器。

tips:如果⽤同样⼀个种⼦值来初始化两个Random对象,然后⽤每个对象调⽤相同的⽅法,那么得到的随机数也是相同的(令牌)2.返回下⼀个伪随机数的⽅法:int nextInt();返回下⼀个伪随机数,它是此随机数⽣成器的序列中均匀分布的int值。

java 用键盘输入1--100的随机数;

java 用键盘输入1--100的随机数;

import java.util.Scanner;//练习 Math数学类用键盘输入1--100的随机数;public class Qu1121 {public static void main(String[] args){int n = 0;while (true) {System.out.println("请猜测一个100以内的正整数<负值或0退出>");System.out.println("请猜测>>");int a = testRandom();// System.out.println(testRandom());int b = testInt();if (b <= 0) {System.out.println("游戏结束");break;}if (b > a) {System.out.println("大了");}else if( b<a){System.out.println("小了");}else{System.out.println("恭喜您经过了"+n+"次的猜测被您猜出来了");System.out.println("继续游戏请按y或Y其他键退出");String c = testString();if (c.equals("y")||c.equals("Y")) {System.out.println("游戏结束");break;}}}}private static String testString() {Scanner scan = new Scanner(System.in);return scan.nextLine();}private static int testInt() {Scanner sc = new Scanner(System.in);int b = sc.nextInt();return b;}private static int testRandom() {int a = (int)(Math.random()*100);return a;}}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档