十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
获取随机数的方法,参数是需要获取的随机数的长度
为高淳等地区用户提供了全套网页设计制作服务,及高淳网站建设行业解决方案。主营业务为成都网站建设、成都网站制作、高淳网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
/**
* 需要的长度
* @param length
*/
private static void getRadom(int length){
//获取一个随机数
double rand = Math.random();
//将随机数转换为字符串
String str = String.valueOf(rand).replace("0.", "");
//截取字符串
String newStr = str.substring(0, length);
System.out.println(newStr);
}
其实就是利用Math.random()方法生成一个随机的double数,然后转换为字符串,在字符串中去做操作
8位数 也就是 1~99999999
然后你直接生成的随机数 校对数据库是否存在这个数,存在你就再次调用随机数,不存在你就用这个随机数,并且保存到数据库(注:不满8位,比如1,你就字符串拼接 00000001,再比如 79233 ,你拼接位00079233)
首先,需要一个范围内的随机数,第二部判重,如果重复了就再次随机.
假设我们需要一个m到n的随机数..
需要用到random函数随机一个从0到1的数.然后再乘m到n的范围,再加m
double i = Math.random() * (m - n) + m ---- 生成随机数
判重..方法有很多种了..比如我们用一个Set来存放已经存在的..
SetDouble set = new LinkedHashSet();
if (set.contains(i)) { 重复了,重新随机 }
else { 向set中添加: set.add(Double.valueOf(i)); }
2017年8月28日 21:37:44
贴一个代码给你,没写全,能表达意思
package snippet;
import java.util.*;
public class Sort {
static int count = 0;
static char[] buf = { '1', '2', '3', '4' ,'5','6','7','8','9','0','a','b'};
static ListString list = new ArrayListString();
public static void main(String[] args) { select(buf, list, 3);
for (String str : list) {
System.out.println(str);
}
System.out.println("In total: " + count); }
public static void select(char[] source, ListString arrayList,
int num) {
int l = source.length;
char[] temp = new char[num];
System.arraycopy(source, 0, temp, 0, num);
arrayList.add(new String(temp));
for (int i = num; i l; i++) {
for (int j = 0; j num; j++) {
char tempChar = temp[j];
temp[j] = source[i];
arrayList.add(new String(temp));
temp[j] = tempChar;
}
}
}
public static void perm(char[] buf, int start, int end) {
if (start == end) {// 当只要求对数组中一个字母进行全排列时,只要就按该数组输出即可
for (int i = 0; i = end; i++) {
System.out.print(buf[i]);
}
Sort.count++;
System.out.println();
} else {// 多个字母全排列
for (int i = start; i = end; i++) {
char temp = buf;// 交换数组第一个元素与后续的元素
buf = buf[i];
buf[i] = temp;
perm(buf, start + 1, end);// 后续元素递归全排列
temp = buf;// 将交换后的数组还原
buf = buf[i];
buf[i] = temp;
}
}
}
}
if(arr[i]==arr[j]){ //这个位置.你只判断了数组的第一个和第二个是不是相等..不相等进入else for循环就直接输出结果了..根本就没有全部判断..
关于你的思路.真的是无语..简单的事情被你复杂化了.
谁会随即产生8位数.有相同的数值就重新产生.这不是在中六合彩么..效率太低了.
我给你写个例子吧.;
import java.util.*;
public class Test3 {
public static void main(String[] args) {
Vector vector = new Vector();
String str="";
int count=9;
for (int i = 0; i 9; i++) {
vector.add(i + 1); //把 1-9 存入
}
for (int i = 0; i 9; i++) {
int id=(int)(Math.random()*count); //随即取里面的数值 count控制随即大小
str+=vector.get(id);
vector.remove(id); //删除已经取走的值
count--;
}
System.out.println(str);
}
}