package cn.rand;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Random;
/**
* Feb 9, 2009
* version 1.1 *
*/
public class Test {
public static HashMap<String, String> map=new HashMap<String, String>();
/**
* 数据源
* @return
*/
public ArrayList<String> getDataList(){
ArrayList<String> al=new ArrayList<String>();
al.add("测试");
al.add("数据源");
al.add("随机数");
al.add("获取");
al.add("网页");
al.add("娱乐");
al.add("主题");
al.add("歌曲");
return al;
}
/**
* 获取不大于count的随机数
* @param count
* @return
*/
public int getStart(int count){
int result=0;
//进行取模(%)操作是为了防止随机数大于total
result=(int)(Math.round(Math.random()*count))%count;
return result;
}
/**
* 轮转,按顺序随机获取count个值
* @param count 要取个数,个数不足从头取
* @return
*/
public ArrayList<String> getScroll(int count){
ArrayList<String> result=new ArrayList<String>();
ArrayList<String> data=this.getDataList();
int total=data.size();
int begin=this.getStart(total);
System.out.println("begin:"+begin+":total:"+total);
int curCount=0;
for(int i=begin;i<total&&curCount<count;i++,curCount++){
result.add(data.get(i).toString());
}
//数量不足时从头开始取
for(int i=0;i<total&&curCount<count;i++,curCount++){
result.add(data.get(i).toString());
}
return result;
}
/**
* 轮转,随机获取某个数,使其每total次必显示一次 平均出现
* @return
*/
public ArrayList<String> getScroll2(){
ArrayList<String> result=new ArrayList<String>();
ArrayList<String> data=this.getDataList();
int total=data.size();
int begin=this.getStart(total);
int curCount=0;
String key="";
if(map.size()==total){
map.clear();
}
//只显示一个数据
for(int i=begin;i<total&&curCount<1;i++){
key=data.get(i).toString();
if(!map.containsKey(key)){
curCount++;
result.add(key);
map.put(key, key);
}
}
//没有数据时从头开始取
for(int i=0;i<total&&curCount<1;i++){
key=data.get(i).toString();
if(!map.containsKey(key)){
curCount++;
result.add(key);
map.put(key, key);
}
}
return result;
}
public static int begin3=0;
/**
* 轮询3,按顺序进行轮询
* @return
*/
public ArrayList getScroll3(int count){
ArrayList<String> result=new ArrayList<String>();
ArrayList<String> data=this.getDataList();
int total=data.size();
int curCount=0;
for(int i=begin3;i<total&&curCount<count;i++,curCount++){
result.add(data.get(i).toString());
}
//数量不足时从头开始取
for(int i=0;i<total&&curCount<count;i++,curCount++){
result.add(data.get(i).toString());
}
//设置下一次begin开始的位置
begin3+=count;
if(begin3>=total){
begin3=begin3-total;
}
return result;
}
/**
* 得到两个数之间的随机数(产生的结果不包括max)
* @param min
* @param max
* @return
*/
public static float getRandom(int min,int max){
float result = 0;
// Random random = new Random();
// result = (max-min)* random.nextFloat() + min;
//进行取模(%)操作是为了防止随机数大于max
result=(float)(Math.random()*max%max);
if(result<min) result+=min;
return result;
}
/**
* @param args
*/
public static void main(String[] args) {
Test test=new Test();
// ArrayList list=test.getScroll(1);
// for(int i=0;i<list.size();i++){
// System.out.println(list.get(i).toString());
// }
// for(int i=0;i<8;i++){
// ArrayList<String> list1=test.getScroll2();
// for(int j=0;j<list1.size();j++){
// System.out.println(i+":"+list1.get(j).toString());
// }
// }
for(int i=0;i<2;i++){
ArrayList<String> list1=test.getScroll3(3);
for(int j=0;j<list1.size();j++){
System.out.println(i+":"+list1.get(j).toString());
}
}
}
}
轮询的方法
最新推荐文章于 2025-02-20 10:22:38 发布