Java n选k程序
来源:互联网 发布:淘宝网址转换 编辑:程序博客网 时间:2024/06/05 00:47
写一个小程序,实现n个数据里面随机选择k个,想到了两种方式:
- 数据放在数组中,随即产生一个index,将最后一个元素挪到index的位置,并n–,保证已经被抽到的数值不会被在此抽到。
- 把数据放在set中,随机选择一个数据,并在set中remove即可,对于如何随机删除set中的一个元素,待解决。
上代码:
package CoreJava;import java.util.Arrays;import java.util.HashSet;import java.util.Scanner;/** * Created by Wht on 2016/11/23. * E-mail: buaawht@163.com */public class LotteryDrawing { public static void main(String[] args) { /*写个n选k的抽奖程序,set和array两种方式*/ Scanner in = new Scanner(System.in); int n, k; System.out.println("输出总个数:"); n = in.nextInt(); System.out.println("输入待选个数:"); k = in.nextInt(); int[]num = new int[n]; for (int i=0 ; i<n; i++) { num[i] = i+1; } int[]res = new int[k]; System.out.println("可选数字如下:"); System.out.println(Arrays.toString(num)); System.out.println("数组式计算中。。。。"); int[] array = Arrays.copyOf(num, num.length); for (int i =0; i<k; i++){ int r = (int)(Math.random()*n); res[i] = array[r]; array[r] = array[--n]; } System.out.println("n选k的结果为:"); System.out.println(Arrays.toString(res)); /* set 方法待完成 System.out.println("set式计算中。。。"); HashSet<Integer> hs = new HashSet<Integer>(); for (int i=0; i<n; i++){ hs.add(num[i]); } for (int i=0; i<k; i++){ //int r = (int)(Math.random()*n); hs.remove(num[i]); res[i] = num[r]; } System.out.println("n选k的结果为:"); System.out.println(Arrays.toString(res));*/ }}
0 0
- Java n选k程序
- 组合 N选K
- Java泛型中E,T,K,V,N
- 从K个数中产生n(n<k)个不同的数,可用于抽奖程序!
- K-Means Java示例程序
- java数据结构与算法分析学习(编写一个程序解决选择问题,k=N/2)
- 传奇程序·m行n图像放大K倍
- C语言程序-用递归实现n^k
- N皇后问题 java程序
- java 泛型 E/T/K/V/N 代表的意义
- java 泛型 E/T/K/V/N 代表的意义
- 输入n个数,输出最小的k个数,java实现
- Java中E、T、K、V、N的含义
- java 泛型 E/T/K/V/N 代表的意义
- K-ary N-cube
- n-k集
- C(n,k)
- n的k次方
- android相机权限适配遇到的坑(包含6.0和6.0以下)
- InnoSetup使用小记
- C# 使用Mono.SQLite进行跨平台开发
- NOIP2016总结
- oracle归档相关参数
- Java n选k程序
- PHP7连接MySQL
- 51nod 1009 1 的数量
- Android知识架构 · 电话面试 · 组件
- tomcat配置Demo数据源
- leetcode 441. Arranging Coins
- git 简单指令。提交本地到github 。git branch 操作
- HDU 1754 I Hate It
- Linux查看程序端口占用情况