最近有几个朋友都在做项目中的 抽奖部分,可是网上抽奖,多少有那么点水份。
在Java 中我们可以使用java.util.Random类来产生一个随机数发生器。它有两种形式的构造函数,分别是Random()和Random(long seed)。Random()使用当前时间即System.currentTimeMillis()作为发生器的种子,Random(long seed)使用指定的seed作为发生器的种子。 很多应用程序会发现 Math
类中的 random
方法更易于使用。
做一个例子,大家可以找出下面的问题,主要是性能方面. 例子是随机产生一个只包含x个8的x的(int)5位数;
问题如下:随机产生一个5位数,要求其中包含一个8或者几个8,用户个人设置显示的个数
1.首先我们来看下规律
一个5位数字,只包含一个8的有多少
个位 十位 百位 千位 ........
08 18
28
38
48
58
68
78
98
1 9 9*9 9*9 *9 ...........
其实上面有点迷惑啦大家的思路,但是要看个人咋想!!用户在设置多少的时候也不能超过最大值。
1.先看mian方法
Random rd = new Random();
int num = rd.nextInt(99999 - 9999) + 9999; // 精确定位5位数值
产生精确定位5位数值,大家在其他使用可以随便定义
具体程序如下,相信大家一定了解,如果不了解,就运行下..下班拉,回家戳麻将!!!
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class RmInt {
public int getNum(int randomNum, int nb) {
int num_5 = randomNum / 10000; // 万位
int num_4 = randomNum % 10000 / 1000; // 千位
int num_3 = randomNum % 1000 / 100; // 百位
int num_2 = randomNum % 100 / 10; // 十位
int num_1 = randomNum % 10 / 1; // 个位
int[] nums = new int[] { num_5, num_4, num_3, num_2, num_1 };
// 获得8的个数
int num = this.getloop(nums);
// 返回符合要求的randomNum
if (nb == num) {
return randomNum;
}
return 0;
}
/**
* 判断随机数里8的个数 有1个8 returnNum=1
*/
public int getloop(int[] nums) {
int returnNum = 0;
// 循环将5位数各个位置的数值比较,是8的个数相加
for (int j = 0; j < nums.length; j++) {
int k = nums[j];
if (k != 0 && k % 8 == 0) {
returnNum += 1;
}
}
return returnNum;
}
public static void main(String[] args) {
RmInt r = new RmInt();
/*
* Random 随机数生成器 获取5位数 nb 用户设置8的个数 arrInt 符合用户要求的数值
*/
int userSize = 20;//用户设置需要的个数
int nb = 2;//含8的个数
List arrInt = new ArrayList();
int num_nub = 0;// 循环次数
while (num_nub < userSize ) {
Random rd = new Random();
int num = rd.nextInt(99999 - 9999) + 9999; // 精确定位5位数值
// 调用rdnum方法
int rdnum = r.getNum(num, nb);
//判断下如果设置的rdnum不为0(不符合要求为0)
if (rdnum != 0) {
arrInt.add(rdnum);
num_nub += 1;
}
}
for (int t = 0; t < arrInt.size(); t++) {
System.out.print(t+":"+arrInt.get(t)+'\n');
}
}
}
上面是产生随机数的一种思路,下面再说种,具体的要求和上面一样,大家来看对不对
我按上面的办法得到一个不包含8的4位数的随机数值比如2456,然后1-5之间我再生成一个,那么1-5无论生成几都把他当成8
比如生成2,那么最后得到数值28456 比如生成1,那么最后得到数值82456
这样的话我们就遗漏9,当然如果是实现方面没有问题,但是和你的需要可能不一样。我只说是一种思路,不去说他在那里使用不好,那里使用好。。
分享到:
相关推荐
java用法StdRandom生成随机数_.docx
易语言Js生成随机数源码.rar
VBA生成不重复的随机数源码.txt
Java获取随机数的3种方法和总结,正对Java中的随机数做出解释
生成加密随机数.rar 生成加密随机数.rar 生成加密随机数.rar
Java简易随机数生成 下载完请输入测试代码 public static void main(String[] args) { System.out.println(random(50,100));//example System.out.println(random(50.0,100.0)); }
JAVA 生成随机数,并根据概率、比率,通过返回数字来判断中奖情况
java生成16位随机数
Java生成32位随机数,短位随机数工具类
RandomArray随机数生成.可生成随机数
易语言源码易语言Js生成随机数源码.rar
可以生成制定范围内的随机数。有GUI界面
VC 生成随机数曲线,根据生成的随机数的大小生成曲线,看上去像示波器一样。生成随机数的方式有三种,一种是平均分布、二是正态分布、三是正态统计。最终效果可以从生成的曲线上看出明显的区别。
VC 在指定的区间内生成随机数,可设置随机数的最大值和最小值,程序会在规定的区间内生成随机数.
//产生随机数的类 final SuiJiShuClass sjs=new SuiJiShuClass(); final JPanel panel=new JPanel(); //初始化一个JPanel panel.setBorder(BorderFactory.createTitledBorder("QQ:330936274")); //设置边界 ...
php随机数生成 $ma = $_POST["max"];//随机数最小值 $mi = $_POST["min"];//随机数最大值 $y = array(); $d=array(); for ($x=$min; $x$ma; $x++) { $y[$x]=$x; } //获取随机数最大最小值之间的所有数值 ...
易语言源码易语言超级随机数源码.rar 易语言源码易语言超级随机数源码.rar 易语言源码易语言超级随机数源码.rar 易语言源码易语言超级随机数源码.rar 易语言源码易语言超级随机数源码.rar 易语言源码易语言超级...
易语言源码易语言汇编取随机数源码.rar 易语言源码易语言汇编取随机数源码.rar 易语言源码易语言汇编取随机数源码.rar 易语言源码易语言汇编取随机数源码.rar 易语言源码易语言汇编取随机数源码.rar 易语言源码...
S7-300生成随机数.rar