课外天地 李树青学习天地Java程序语言课件 → 作业之一:生成指定范围的随机数


  共有16380人关注过本帖树形打印复制链接

主题:作业之一:生成指定范围的随机数

帅哥哟,离线,有人找我吗?
admin
  1楼 博客 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 管理员
等级:管理员 帖子:1940 积分:26616 威望:0 精华:34 注册:2003/12/30 16:34:32
作业之一:生成指定范围的随机数  发帖心情 Post By:2008/10/24 21:45:15 [只看该作者]

public class Exec {
        public static void main(String[] args) {
                // 定义数组维度的大小
                final int number = 4;

                // 利用RandomArray类生成具有不重复随机数的数组
                RandomArray ra = new RandomArray(number);

                // 循环显示数组元素
                for (int i = 0; i < number; i++) {
                        for (int j = 0; j < number; j++) {
                                System.out.print(ra.getArray()[i][j] + "\t");
                        }
                        System.out.println();
                }
        }

}

// 该类生成具有不重复随机数的数组
class RandomArray {
        // 保存随机数的数组
        private int[][] array;

        // 设置数组的维度大小
        private int size;

        // 数组的读取函数
        public int[][] getArray() {
                return array;
        }

        // 该构造函数对数组维度大小进行初始化,并生成随机数组
        public RandomArray(int size) {
                setSize(size);
                array = new int[size][size];
                generateRandomArray();
        }

        // 数组维度大小的设置函数
        public void setSize(int size) {
                this.size = size;
        }

        // 生成具有不重复随机数的数组
        public void generateRandomArray() {
                // 临时随机数变量
                int randomNumber;
                
                // 判断是否重复的标记变量
                boolean isRepeated;

                // 循环所有的数组元素
                for (int x = 0; x < size; x++)
                        for (int y = 0; y < size; y++) {
                                // 生成1到size*size间的一个随机整数
                                randomNumber = (int) (Math.random() * size * size) + 1;

                                // 检查该随机数是否重复
                                isRepeated = false;
                                for (int i = 0; i < size; i++) {
                                        for (int j = 0; j < size; j++) {
                                                if (randomNumber == array[i][j]) {
                                                        isRepeated = true;
                                                        break;
                                                }
                                        }
                                }

                                // 如果没有重复,则给相应的数组元素赋值,否则重置当前数组元素下标,留待下次循环再次设置随机数
                                if (!isRepeated) {
                                        array[x][y] = randomNumber;
                                } else {
                                        y--;
                                }
                        }
        }

}

[此贴子已经被作者于2010-12-12 08:27:35编辑过]

 回到顶部