java取一个四位数的每个_java等概率的抽取一个四位数2

package com.chinatricon.spring;import java.util.ArrayList;import java.util.HashSet;import java.util.Iterator;import java.util.Set;/** * 要求: * 1 每次取一个,共取4次,4次组成一个4位数,拼起来为Set中的数 * 2 每次取数,Set中的每个数都有相同的机会 */public class LuckyGetter {public Set set = new HashSet();public static void main(String[] args) {// 初始化SetLuckyGetter getter = new LuckyGetter();getter.initSet(getter.set);// 取数long start = System.currentTimeMillis();for (int i = 0; i < 2000; i++) {System.out.println(getter.getRandom());}long end = System.currentTimeMillis();System.out.println(end - start);}public int getRandom() {int num = 0;for (int i = 0; i < 4; i++) {num = getNext(num);}return num;}/** * 1 如果num为0,返回千位 * 2 如果num为1位,返回千位和百位,以此类推 */public int getNext(int num) {if (num < 0 || num > 9999) {return 0;}int nextNum = 0;// 请把您的代码填写在这里nextNum = test2(num);return nextNum;}public void initSet(Set set) {set.add(1235);set.add(1236);set.add(1245);set.add(1248);set.add(1366);set.add(1369);set.add(1382);set.add(1384);set.add(2235);set.add(2236);set.add(2245);set.add(2248);set.add(2366);set.add(2369);set.add(2382);set.add(2384);set.add(8514);}public int test(int num) {ArrayList list = new ArrayList();for (Iterator it = set.iterator(); it.hasNext();) {Integer number = it.next();if (number / 10000 == num) {list.add(number / 1000);} else if (number / 1000 == num) {list.add(number / 100);} else if (number / 100 == num) {list.add(number / 10);} else if (number / 10 == num) {list.add(number);}}return list.get((int) (Math.random() * list.size()));}public int test2(int num) {ArrayList list = new ArrayList();for (Iterator it = set.iterator(); it.hasNext();) {String number = String.valueOf(it.next());if (number.startsWith(String.valueOf(num))) {list.add(Integer.parseInt(number.substring(0, String.valueOf(num).length() + 1)));} else if (num == 0) {list.add(Integer.parseInt(number.substring(0, 1)));}}return list.get((int) (Math.random() * list.size()));}}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值