首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

android程序产生随机数有有关问题

2012-03-21 
android程序产生随机数有问题我编了一个程序可以在屏幕上随机位置显示若干随机数,但是运行之后随机数有大

android程序产生随机数有问题
我编了一个程序可以在屏幕上随机位置显示若干随机数,但是运行之后随机数有大量重复,而且基本都是那几个数,完全不是我想要的。但是把产生随机数的那段代码单独拿出来写一个java application又是完全没有问题的。我用arraylist和hashset都试过没事,一运行虚拟机就都有问题了。谁能帮忙运行下看看,这到底是怎么回事?问题出在哪里?谢谢大家。

Java code
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;         }    }}


[解决办法]
我用真机试了一下楼主的代码是没有问题的.每次都能在随机的地方生成五个不同的随机数.每次生成的五个数都不一样. 由于环境原因,我没办法检证在模拟器上是什么效果.

热点排行