真随机算法

来源:互联网 发布:防伪纹制作软件 编辑:程序博客网 时间:2024/06/05 05:56
private static int anyRandom(int n){
  int max = n+1;//共n+1个数字,从0开始
  int bigend = ((1+max)*max)/2;//大区间的上限(1+2+3+...+max)
  int x = (int)(Math.random()%bigend);
  int sum = 0;//表示了各区间的上限
  for(int i = 0;i <max;i++){
   sum+=(max - i);//sum每次增长的长度为各个小区间的跨度
   if(sum>x){
    return i;
   }
}
原创粉丝点击