android程序产生随机数有问题
我编了一个程序可以在屏幕上随机位置显示若干随机数,但是运行之后随机数有大量重复,而且基本都是那几个数,完全不是我想要的。但是把产生随机数的那段代码单独拿出来写一个java application又是完全没有问题的。我用arraylist和hashset都试过没事,一运行虚拟机就都有问题了。谁能帮忙运行下看看,这到底是怎么回事?问题出在哪里?谢谢大家。
package com.passion;import java.util.ArrayList;import java.util.Random;import android.app.Activity;import android.content.Context;import android.content.res.Resources;import android.graphics.Color;import android.graphics.Typeface;import android.graphics.drawable.Drawable;import android.os.Bundle;import android.util.DisplayMetrics;import android.widget.AbsoluteLayout;import android.widget.TextView;public class Test extends Activity { public DisplayMetrics dm; public int width,height; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); newView view = newView.buildView(this); setContentView(view); } static class newView extends AbsoluteLayout { private int count = 5; private TextView[] text = new TextView[count]; private int[] locationx = null; private int[] locationy = null; private int[] numbers = null; public newView(Context context) { super(context); // TODO Auto-generated constructor stub //设置字体 Typeface typeface = Typeface.createFromAsset(context.getAssets(), "fonts/LithosPro-Bold.ttf"); numbers = randRange(count,20); locationx = randRange(count,480); locationy = randRange(count,600); for(int i =0;i<count;i++){ text[i] = new TextView(context); addView(text[i],new AbsoluteLayout.LayoutParams(100,100, locationx[i], locationy[i])); text[i].setText(numbers[i]+""); text[i].setTextSize(60); text[i].setTypeface(typeface); text[i].setTextColor(Color.WHITE); } for(int j = 0;j<count;j++){ System.out.println(numbers[j]); } } public static newView buildView(Context c) { return new newView(c); } //产生随机数,num是个数,max是最大允许的范围 public int[] randRange(int num ,int max) { ArrayList<Integer> list = new ArrayList<Integer>(); Random rand = new Random(); while(true){ int rm = rand.nextInt(max); if(!list.contains(rm)){ list.add(rm); if(list.size()>=num)break; } } int result[] = new int[num]; for(int i = 0;i<list.size();i++){ result[i] = list.get(i); } return result; } }}