双色球,彩票抽取的三种不同的实现方法
2013-05-26 12:41
323 查看
1. 用Random() 类 定义对象生[b]成随机数,不从控制台输入数据,非排序输出,输出调用toString()[/b]
2、直接调用Math.random()生成随机数,从控制台输入数据,排序随机数,使用For each
package self.temp8; import java.util.*; /** * 双色球的实现 * 数据从 [1,33] 随机生成 6个数据,数据不能重复 * 2013-4-24 下午10:46:46 */ public class DoublePoolDemo { public static void main(String[] args) { getPool(); } /* 使用一个标记数组 boolean[] used;对于已经使用的球进行标记 */ public static void getPool() { Random r = new Random(); // 定义一个随机函数的对象 boolean[] used = new boolean[34]; // 定义标记数组,长度为34,下标最大33 //used[0] = true; int[] pool = new int[6]; int i=0; while( i<6) { int index = r.nextInt(33) + 1; // 生成一个随机数 if (used[index] != true) { // 判断该随机数是否使用过,若未使用 pool[i] = index; // 则将此随机数赋值给数组 used[index] = true; // 并标记此随机数已使用 i++; } } /* 双重循环的实现 * for (int i = 0; i < pool.length; i++) { int index = r.nextInt(33) + 1; pool[i] = index; for (int j = 0; j < i; j++) {// 对数据进行重复处理 if (pool[j] == pool[i]) {// 发现重复数据 i--;// 取消当前位置的值 break; } } }*/ System.out.println (Arrays.toString(pool)); // 用toString() 方法输出 } }
2、直接调用Math.random()生成随机数,从控制台输入数据,排序随机数,使用For each
package self.temp8; import java.util.*; /** * 双色球的实现 从n个数中抽取k个不同的数 * * 2013-5-26 上午11:51:44 */ public class LotteryDrawing { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.print("需要抽取多少个数? "); int k = in.nextInt(); System.out.print("最多可以抽取多少个数? "); int n = in.nextInt(); // 给数组赋值,先将n个数存储到一个一位数组中 number[34]; int[] numbers = new int ; for (int i = 0; i < numbers.length; i++) numbers[i] = i + 1; // 用数组result[] 存储抽取的数字 int[] result = new int[k]; for (int i = 0; i < result.length; i++) { // 用随机函数抽取一个数(0 ~ n-1)之间 int r = (int) (Math.random() * n);// Math.random()返回一个0到1之间([0,1))的随机浮点数。 // 用n乘以这个浮点数,得到从0到n-1之间的一个随机数 result[i] = numbers[r];// 将抽取的数存储到result[]中 // numbers[r]已经用过,将number[n-1]复制给numbers[r],即numbers[r] = // number[n-1],再将n-1,使得下一轮循环时,抽取的 随机数在0~n-2之间,达到去重的效果 numbers[r] = numbers[n - 1]; n--; } // 排序随机抽取的数 Arrays.sort(result); for (int r : result) // For each 循环 System.out.print(r+" "); } }
相关文章推荐
- LCA实现的三种不同的方法
- MFC三种不同方式实现图形的保存和重绘---方法二: 运用CMetaFileDC
- MFC三种不同方式实现图形的保存和重绘---方法二: 运用CMetaFileDC
- Java 多线程实现的三种方法,附两个线程执行不同的输出
- 实现两数 交换的三种不同编程方法。
- 不带头结点的单链表反转 三种不同方法实现
- MFC三种不同方式实现图形的保存和重绘---方法一:通过兼容DC(CompatibleDC)的方式
- MFC三种不同方式实现图形的保存和重绘---方法一:通过兼容DC(CompatibleDC)的方式
- java简单实现双色球彩票模拟实例(数组、排序、方法、随机数、键盘输入)
- 用三种不同的方法模拟实现strlen
- MFC三种不同方式实现图形的保存和重绘---方法一:通过集合类CPtrArray保存点的坐标
- 三种不同的方法实现按view点击事件
- MFC三种不同方式实现图形的保存和重绘---方法一:通过集合类CPtrArray保存点的坐标
- LCA实现的三种不同的方法
- SQL--删除表数据的三种不同实现方法
- 斐波拉契数列进行编译,采用三种不同的方法实现,迭代,递归,数组
- Java反射创建类对象的三种实现方法
- 【C语言】strlen的三种实现方法,strcmp,strcat,strcpy
- 树的三种遍历方法代码实现 (数据结构)C语言
- 三种非驱动实现文件监视的方法