Flask接口签名sign原理与实例代码浅析
274
2022-12-08
JAVA随机数随机字母的实现(微信抢红包小练习)
今天我们谈一谈java中的随机数
随机数 ——Math.random()
0.0 在Math类中存在一个random()方法,用于产生随机数字,这个方法生成在0.0<=生成数<1.0
0.1那么它默认的生成的数显然在有些时候是满足不了我们的,我们来看看它的升级版
类型
返回值
(int)(MatvSxJPBzZSh.Random()*n)
0<=返回值 m+(int)(Math.Random()*n) m<=返回值 随机数 ——字母 0.2 使用Math类的random() 方法也可以随机生成字符,(a----z) (char)('a'+Math.random()*('z'-'a'-1)); 0.3 A-Z与a-z的写法是不一样的(char)(cha1+Math.random*(char2-cha1+1)); 随机数 ——Random 0.4 除了Math 类,JAVA中还有Random可以创建数组。 Random c = mew Random; Random c = new Random(seedValue); c : Random类对象; seedValue : 随机数生成的种子; 0.6 下面是几个常用的方法 类型 返回值 public int nextInt 返回一个随机整数 public int nextInt(int n) 0<=返回值<0 public long nextLong() 返回一个随机长整型数 public boolean nextBoolean() 返回一个随机布尔型值 public float nextFloat() 返回一个浮点型 public doublle nextDouble() 返回一个双精度值 微信抢红包 我想大家一定在微信里抢过红包或者发过红包,今天我们就带领大家用JAVA制作一个微信的小程序。 1.0 我们先创建一个控制扫描器,输入显示发出的金额与红包个数 System.out.println("--------微信抢红包---------"); Scanner sc = new Scanner (System.in); System.out.println("金额¥"); double total = sc.nextDouble(); System.out.println("发出红包个数"); int num = sc.nextInt(); 1.1 我们的红包在散发出去的时候是不会出现 0¥ 所以我们先确定他的最小值并创建随机数。 Random c = new Random(); double min = 0.01; 1.2 随后我们用一个 for 循环来循环发vSxJPBzZS放我们的红包; for(int i=1;i<=num;i++) 1.3 我们所抢的红包并不是平均发放的,它有最大值最小值,所以我们要创建一个最大值和最小值 我们的最大值如果等于我们红包钱数总数,那我们的其他的红包岂不就是没有钱了,所以,我们需要一个公式, vSxJPBzZS 最大金额 =可分配金额 - (红包个数 - 已发出的红包数)*红包最小金额 double max = total - (num - i)* min; 1.4 我们并不是将所有的钱放到红包里所以我们再定义一下红包的范围 double range = max - min;// 1.5 现在我们开始计算应该放多少钱了,这一步有一点点绕。 double money = c.nextInt(range); 但我们在编译器里我们会发现报错了 这是因为nextInt()他的返回值(参数)是一个整型值,而我们的range与money他们都是 double 值,这样当然会报错了。 那我们怎么改呢? 例如我们的range是23.56这是一个double值,我们将range*100 23.56*100=2356,随后我们再将它强制转换成整数 double money = c.nextInt((int)range*100); 但我们最终的结果为2356¥,显然这是将我们的红包是在无形中放大了100倍,这样谁还会愿意发红包呢?咋解决,很简单我们之前 23.56*100 我们再除上100是不是就右变回去了,最后啊我们再返回一个double值就可以了 double money = (double)c.nextInt((int)range*100)/100; 这样我们就在range的范围里获取了随机的金额。 1.6 我们之前说了nextInt()这个方法它有一个弊端,它的返回值范围是0<=返回值<0,也就是说我们的红包还会出现0¥。 为了防止0¥的出现,我们定义一个 finalMoney double finalMoney = money + min; 这才是我们最后的金额 1.7 上面是我们第一个红包所发出的金额,那我们的第2第3第num个红包的金额是多少呢? total = total - finalMoney; 现在的total才是我们下一个红包的 可分配金额。 随后我们输出 System.out.println("第"+i+"个红包金额"+String.format("%.2f",finalMoney)+"¥"); (%.2f意思是保留两位小数) 最后啊我们将扫描器关掉 sc.close(); 1.8 来我们试一下 这就是我们的微信抢红包的游戏。 1.9完整代码: public vSxJPBzZSstatic void main(String[] args) { System.out.println("--------微信抢红包---------"); Scanner sc = new Scanner (System.in); System.out.println("金额¥"); double total = sc.nextDouble(); System.out.println("发出红包个数"); int num = sc.nextInt(); double min = 0.01;//红包最小金额 Random c = new Random();//创建随机数 for(int i=1;i<=num;i++) { /* * 最大金额 =可分配金额 - (红包个数 - 已发出的红包数)*红包最小金额 */ double max = total - (num - i)* min; double range = max - min;// double money = (double)c.nextInt((int)(range*100))/100; double finalMoney = money + min; total = total - finalMoney; System.out.println("第"+i+"个红包金额"+String.format("%.2f",finalMoney)+"¥"); }//保留两位小数 sc.close(); } 当你现在还是19或20岁的少年,你会觉得一个人的生命其实很漫长,但当你看到那些年迈的老人时,你会觉得我也有这样的一天,一个人的生命其实也非常短暂,我们通过媒体了解32岁猝然离世功夫巨星李小龙,但他的一生充满了传奇,在凌晨我们的手机几乎在同一时间给我们传来了噩耗,曼巴离我们而去,但他的一生充满了热爱,还有我们的吹哨人,在疫情期间那些英年早逝的英雄们,他们的一生充满了正能量与奉献。回vSxJPBzZS过去想想,你是否还是从前那个少年,是否没有一丝丝改变————
m+(int)(Math.Random()*n)
m<=返回值 随机数 ——字母 0.2 使用Math类的random() 方法也可以随机生成字符,(a----z) (char)('a'+Math.random()*('z'-'a'-1)); 0.3 A-Z与a-z的写法是不一样的(char)(cha1+Math.random*(char2-cha1+1)); 随机数 ——Random 0.4 除了Math 类,JAVA中还有Random可以创建数组。 Random c = mew Random; Random c = new Random(seedValue); c : Random类对象; seedValue : 随机数生成的种子; 0.6 下面是几个常用的方法 类型 返回值 public int nextInt 返回一个随机整数 public int nextInt(int n) 0<=返回值<0 public long nextLong() 返回一个随机长整型数 public boolean nextBoolean() 返回一个随机布尔型值 public float nextFloat() 返回一个浮点型 public doublle nextDouble() 返回一个双精度值 微信抢红包 我想大家一定在微信里抢过红包或者发过红包,今天我们就带领大家用JAVA制作一个微信的小程序。 1.0 我们先创建一个控制扫描器,输入显示发出的金额与红包个数 System.out.println("--------微信抢红包---------"); Scanner sc = new Scanner (System.in); System.out.println("金额¥"); double total = sc.nextDouble(); System.out.println("发出红包个数"); int num = sc.nextInt(); 1.1 我们的红包在散发出去的时候是不会出现 0¥ 所以我们先确定他的最小值并创建随机数。 Random c = new Random(); double min = 0.01; 1.2 随后我们用一个 for 循环来循环发vSxJPBzZS放我们的红包; for(int i=1;i<=num;i++) 1.3 我们所抢的红包并不是平均发放的,它有最大值最小值,所以我们要创建一个最大值和最小值 我们的最大值如果等于我们红包钱数总数,那我们的其他的红包岂不就是没有钱了,所以,我们需要一个公式, vSxJPBzZS 最大金额 =可分配金额 - (红包个数 - 已发出的红包数)*红包最小金额 double max = total - (num - i)* min; 1.4 我们并不是将所有的钱放到红包里所以我们再定义一下红包的范围 double range = max - min;// 1.5 现在我们开始计算应该放多少钱了,这一步有一点点绕。 double money = c.nextInt(range); 但我们在编译器里我们会发现报错了 这是因为nextInt()他的返回值(参数)是一个整型值,而我们的range与money他们都是 double 值,这样当然会报错了。 那我们怎么改呢? 例如我们的range是23.56这是一个double值,我们将range*100 23.56*100=2356,随后我们再将它强制转换成整数 double money = c.nextInt((int)range*100); 但我们最终的结果为2356¥,显然这是将我们的红包是在无形中放大了100倍,这样谁还会愿意发红包呢?咋解决,很简单我们之前 23.56*100 我们再除上100是不是就右变回去了,最后啊我们再返回一个double值就可以了 double money = (double)c.nextInt((int)range*100)/100; 这样我们就在range的范围里获取了随机的金额。 1.6 我们之前说了nextInt()这个方法它有一个弊端,它的返回值范围是0<=返回值<0,也就是说我们的红包还会出现0¥。 为了防止0¥的出现,我们定义一个 finalMoney double finalMoney = money + min; 这才是我们最后的金额 1.7 上面是我们第一个红包所发出的金额,那我们的第2第3第num个红包的金额是多少呢? total = total - finalMoney; 现在的total才是我们下一个红包的 可分配金额。 随后我们输出 System.out.println("第"+i+"个红包金额"+String.format("%.2f",finalMoney)+"¥"); (%.2f意思是保留两位小数) 最后啊我们将扫描器关掉 sc.close(); 1.8 来我们试一下 这就是我们的微信抢红包的游戏。 1.9完整代码: public vSxJPBzZSstatic void main(String[] args) { System.out.println("--------微信抢红包---------"); Scanner sc = new Scanner (System.in); System.out.println("金额¥"); double total = sc.nextDouble(); System.out.println("发出红包个数"); int num = sc.nextInt(); double min = 0.01;//红包最小金额 Random c = new Random();//创建随机数 for(int i=1;i<=num;i++) { /* * 最大金额 =可分配金额 - (红包个数 - 已发出的红包数)*红包最小金额 */ double max = total - (num - i)* min; double range = max - min;// double money = (double)c.nextInt((int)(range*100))/100; double finalMoney = money + min; total = total - finalMoney; System.out.println("第"+i+"个红包金额"+String.format("%.2f",finalMoney)+"¥"); }//保留两位小数 sc.close(); } 当你现在还是19或20岁的少年,你会觉得一个人的生命其实很漫长,但当你看到那些年迈的老人时,你会觉得我也有这样的一天,一个人的生命其实也非常短暂,我们通过媒体了解32岁猝然离世功夫巨星李小龙,但他的一生充满了传奇,在凌晨我们的手机几乎在同一时间给我们传来了噩耗,曼巴离我们而去,但他的一生充满了热爱,还有我们的吹哨人,在疫情期间那些英年早逝的英雄们,他们的一生充满了正能量与奉献。回vSxJPBzZS过去想想,你是否还是从前那个少年,是否没有一丝丝改变————
随机数 ——字母
0.2 使用Math类的random() 方法也可以随机生成字符,(a----z)
(char)('a'+Math.random()*('z'-'a'-1));
0.3 A-Z与a-z的写法是不一样的(char)(cha1+Math.random*(char2-cha1+1));
随机数 ——Random
0.4 除了Math 类,JAVA中还有Random可以创建数组。
Random c = mew Random;
Random c = new Random(seedValue);
c : Random类对象;
seedValue : 随机数生成的种子;
0.6 下面是几个常用的方法
类型
返回值
public int nextInt
返回一个随机整数
public int nextInt(int n)
0<=返回值<0
public long nextLong()
返回一个随机长整型数
public boolean nextBoolean()
返回一个随机布尔型值
public float nextFloat()
返回一个浮点型
public doublle nextDouble()
返回一个双精度值
微信抢红包
我想大家一定在微信里抢过红包或者发过红包,今天我们就带领大家用JAVA制作一个微信的小程序。
1.0 我们先创建一个控制扫描器,输入显示发出的金额与红包个数
System.out.println("--------微信抢红包---------");
Scanner sc = new Scanner (System.in);
System.out.println("金额¥");
double total = sc.nextDouble();
System.out.println("发出红包个数");
int num = sc.nextInt();
1.1 我们的红包在散发出去的时候是不会出现 0¥ 所以我们先确定他的最小值并创建随机数。
Random c = new Random();
double min = 0.01;
1.2 随后我们用一个 for 循环来循环发vSxJPBzZS放我们的红包;
for(int i=1;i<=num;i++)
1.3 我们所抢的红包并不是平均发放的,它有最大值最小值,所以我们要创建一个最大值和最小值
我们的最大值如果等于我们红包钱数总数,那我们的其他的红包岂不就是没有钱了,所以,我们需要一个公式,
vSxJPBzZS
最大金额 =可分配金额 - (红包个数 - 已发出的红包数)*红包最小金额
double max = total - (num - i)* min;
1.4 我们并不是将所有的钱放到红包里所以我们再定义一下红包的范围
double range = max - min;//
1.5 现在我们开始计算应该放多少钱了,这一步有一点点绕。
double money = c.nextInt(range);
但我们在编译器里我们会发现报错了
这是因为nextInt()他的返回值(参数)是一个整型值,而我们的range与money他们都是 double 值,这样当然会报错了。
那我们怎么改呢?
例如我们的range是23.56这是一个double值,我们将range*100 23.56*100=2356,随后我们再将它强制转换成整数
double money = c.nextInt((int)range*100);
但我们最终的结果为2356¥,显然这是将我们的红包是在无形中放大了100倍,这样谁还会愿意发红包呢?咋解决,很简单我们之前 23.56*100 我们再除上100是不是就右变回去了,最后啊我们再返回一个double值就可以了
double money = (double)c.nextInt((int)range*100)/100;
这样我们就在range的范围里获取了随机的金额。
1.6 我们之前说了nextInt()这个方法它有一个弊端,它的返回值范围是0<=返回值<0,也就是说我们的红包还会出现0¥。
为了防止0¥的出现,我们定义一个 finalMoney
double finalMoney = money + min;
这才是我们最后的金额
1.7 上面是我们第一个红包所发出的金额,那我们的第2第3第num个红包的金额是多少呢?
total = total - finalMoney;
现在的total才是我们下一个红包的 可分配金额。
随后我们输出
System.out.println("第"+i+"个红包金额"+String.format("%.2f",finalMoney)+"¥");
(%.2f意思是保留两位小数)
最后啊我们将扫描器关掉
sc.close();
1.8 来我们试一下
这就是我们的微信抢红包的游戏。
1.9完整代码:
public vSxJPBzZSstatic void main(String[] args) {
System.out.println("--------微信抢红包---------");
Scanner sc = new Scanner (System.in);
System.out.println("金额¥");
double total = sc.nextDouble();
System.out.println("发出红包个数");
int num = sc.nextInt();
double min = 0.01;//红包最小金额
Random c = new Random();//创建随机数
for(int i=1;i<=num;i++) {
/*
* 最大金额 =可分配金额 - (红包个数 - 已发出的红包数)*红包最小金额
*/
double max = total - (num - i)* min;
double range = max - min;//
double money = (double)c.nextInt((int)(range*100))/100;
double finalMoney = money + min;
total = total - finalMoney;
System.out.println("第"+i+"个红包金额"+String.format("%.2f",finalMoney)+"¥");
}//保留两位小数
sc.close();
}
当你现在还是19或20岁的少年,你会觉得一个人的生命其实很漫长,但当你看到那些年迈的老人时,你会觉得我也有这样的一天,一个人的生命其实也非常短暂,我们通过媒体了解32岁猝然离世功夫巨星李小龙,但他的一生充满了传奇,在凌晨我们的手机几乎在同一时间给我们传来了噩耗,曼巴离我们而去,但他的一生充满了热爱,还有我们的吹哨人,在疫情期间那些英年早逝的英雄们,他们的一生充满了正能量与奉献。回vSxJPBzZS过去想想,你是否还是从前那个少年,是否没有一丝丝改变————
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~