有一个表A(配置了50条数据,以后会增加),用户每天看见的数据会从A表里随机抽一条进行查看,会有N多用户进行查看(每个用户之间互相独立),如何控制每个用户在查看完A表所有数据之前,每天看到数据不会重复。用户数量级(百万)
补充:A表中的数据没有属性(类似标志位),A表递增速度也就是几十条的递增,举个例子:假如A表中有两条数据,a和b,用户张三第一天看到是a,李四看到是b,第二天期望,张三看到b,李四看到a。感谢各位大神解答
每条数据做个标记,看了就设置为false ,没看就是默认true,
用文件存储看了的记录,根据记录随机,在记录内的继续随机
A表的数据量以后会是什么样的规模?
1.建议加一个状态标识一下是否看过,看过是1,没看过是0,然后每次只在没看过的随机一条,然后当所有都看过后,把所有的都标识为没看过。
public class TestMain{
public static void main(String[] args) {
for(int i=0;i<50;i++ ){
System.out.println(getRandom(50));
}
}
public static int getRandom(int count){
List<String> slist = new ArrayList<String>();
List<String> slist2 = new ArrayList<String>();
int returnvalue;
for(int i=0;i<count;i++){
slist.add(String.valueOf(i+1));
}
if(slist.size()>0){
int temp = (int) Math.round(Math.random()*slist.size());
if(temp==0){
temp=1;
}
String suiji = slist.get(temp-1);
slist2.add(suiji);
slist.remove(temp-1);
returnvalue = Integer.parseInt(suiji);
}else{
slist=slist2;
int temp = (int) Math.round(Math.random()*slist.size());
if(temp==0){
temp=1;
}
String suiji = slist.get(temp-1);
slist2.add(suiji);
slist.remove(temp-1);
returnvalue = Integer.parseInt(suiji);
}
return returnvalue;
}
}