有谁能提供像QQ那样随机生成一个号,但又不重复 想实现的功能:1-10,10个数字,如果有十个用户申请,实现每个用户随机申请一个号,而且不重复…… 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 随机生成一个号---> 后台验证 --> 重复再随机生成一个号-->再验证直到不重复啦 一个散列存所有可用的数(如果数很多 可以用N个散列 比如N1存高8位 N2存低8位)当用户申请时 随机从散列里取一个,并从散列中删掉这个数 import java.util.Arrays; import java.util.Random; public class RandomNumber { /** * 根据给定的最小数字和最大数字,以及随机数的个数,产生指定的不重复的数组 * @param min 最小数字(包含该数) * @param max 最大数字(不包含该数) * @param size 指定产生随机数的个数 */ public static int[] generateRandomNumber(int min, int max, int size) { if (min>= max || (max- min) < size) { return null; } // 种子你可以随意生成,但不能重复 int[] seed = new int[max - min]; for (int i = min; i < max; i ++) { seed[i - min] = i; } int[] ranArr = new int[size]; Random ran = new Random(); for (int i = 0; i < size; i++) { int j = ran.nextInt(seed.length - i); ranArr[i] = seed[j]; seed[j] = seed[seed.length - 1 - i]; } return ranArr; } public static void main(String[] args) { int[] ranArr = generateRandomNumber(0,50,10); System.out.println(Arrays.toString(ranArr)); } } 用hashSet吧,这个里面是不能存放重复值的 用数据库的sequence自己生成不是很好、、吗 我有一个想法,就是先将这些号码的数据表产生出来,并存放在一个数据表里(数据表A),然后在提供他人号码的时候,从这个数据表内随机的取一个出来,进行保存到另一个数据表(数据表B),再把这刚才提供出来的号码从原表中(数据表A)删除!这样,以后在数据表A中随机取出来的数据,永远不会重复。 用散列就可以做到用hashtable 他以键值对的形式存在这个集合中不允许出现重复的元素。而且得容量的大小会随着集合中存储的多少进行自增这样你要的随机数就可以产生了 如#10F, java核心技术里头有代码。 jsp调用ocx 急求 在线等! 在线等呀........急........... struts实现多个下拉框的问题 hibernate的问题 如何屏蔽IE后退按钮 关于session的问题 求助:JSP标准标签库(JSTL)的页面出错. jsp简单问题?????? servlet怎样显示sql server数据库里的汉字 向数据库插入,读取带有类名属性的数据,怎么做到的 项目上线域名的配置问题求高手。 jsp文件上传
直到不重复啦
当用户申请时 随机从散列里取一个,并从散列中删掉这个数
import java.util.Arrays;
import java.util.Random;
public class RandomNumber {
/**
* 根据给定的最小数字和最大数字,以及随机数的个数,产生指定的不重复的数组
* @param min 最小数字(包含该数)
* @param max 最大数字(不包含该数)
* @param size 指定产生随机数的个数
*/
public static int[] generateRandomNumber(int min, int max, int size) {
if (min>= max || (max- min) < size) {
return null;
}
// 种子你可以随意生成,但不能重复
int[] seed = new int[max - min];
for (int i = min; i < max; i ++) {
seed[i - min] = i;
}
int[] ranArr = new int[size];
Random ran = new Random();
for (int i = 0; i < size; i++) {
int j = ran.nextInt(seed.length - i);
ranArr[i] = seed[j];
seed[j] = seed[seed.length - 1 - i];
}
return ranArr;
}
public static void main(String[] args) {
int[] ranArr = generateRandomNumber(0,50,10);
System.out.println(Arrays.toString(ranArr));
}
}
用hashtable 他以键值对的形式存在
这个集合中不允许出现重复的元素。
而且得容量的大小会随着集合中存储的多少进行自增
这样你要的随机数就可以产生了
如#10F, java核心技术里头有代码。