1. [代码][Java]代码    
package com.luiszhang.test;
 
import java.util.Arrays;
 
/**
 * NumberLotteryGame
 * 一个简单的数字彩票游戏类
 * @author LuisZhang
 * 参考了core java 8th中的例3-7的设计思想
 */
public class NumberLotteryGame {
    private int gamesNumber;    // 生成游戏的数量,为以后多线程扩展做考虑
    private int numbersLength;  // 数字序列的总长度
    private int winningNumbersLength;  // 中奖的数字序列的长度
     
    /**
     * Constructor with three parameters
     * 初始化3个参数的构造方法
     * @param gamesNumber
     * @param numbersLength
     * @param winningNumbersLength
     */
    public NumberLotteryGame(int gamesNumber, int numbersLength, int winningNumbersLength) {
        this.gamesNumber = gamesNumber;
        this.numbersLength = numbersLength;
        this.winningNumbersLength = winningNumbersLength;
    }
 
    /**
     * Generate a number Array
     * 生成一个产生中奖序列所需的数字序列
     * @param length 数字序列的长度
     * @return numbers 产生的数字序列
     */
    public static int[] generateNumberArray(int length) {
        int[] numbers = new int[length];
         
        for (int i = 0; i < numbers.length; i++) {
            numbers[i] = i + 1;
        }
         
        return numbers;
    }
     
    /**
     * Generate a winning number array
     * 根据生成的数字序列,产生不重复的中奖数字序列
     * @param length 中奖数字序列的长度
     * @return result 中奖数字数组
     */
    public int[] generateWinningNumberArray(int length) {
        int[] numbers = NumberLotteryGame.generateNumberArray(numbersLength);
         
        int[] result = new int[length];
         
        int n = numbersLength;
         
        // 该for循环为产生不重复的中奖序列的核心代码
        for(int i = 0; i < result.length; i++) {
            int r = (int) (Math.random() * n);  // 随机产生一个从0——(n-1)的数字,Math.random()
                                                // 随机产生一个[0, 1)范围的double型数值,
            result[i] = numbers[r];             // 将该随机数字作为数组的下标,
                                                // 将该下标对应的值赋给result[i]
            numbers[r] = numbers[n - 1];        // 将numbers数组的numbers[n-1]的值,赋给刚已赋
                                                // 值过的numbers[r]。
            n--;   // 将n-1,从而下一次循环产生的随机的原数组下标的范围从0——(n-1)-1,
                   // 保证了上一步中,已经赋值给数组中其他数的numbers[n-1],不会在下次循环中给取
                   // 得,从而保证了产生的中奖数组result为不重复的。
        }
         
        return result;
    }
     
    /**
     * Show winning NumberArray
     * 显示中将数组美女
     */
    public void showWinningNumberArray() {
        int[] winningNumbers = this.generateWinningNumberArray(winningNumbersLength);
        Arrays.sort(winningNumbers);http://www.enterdesk.com/special/sexygirl/​
         
        for(int r : winningNumbers) {
            System.out.print(r + " ");
        }
         
        System.out.println();
    }
 
    /**
     * @return the gamesNumber
     */
    public int getGamesNumber() {
        return gamesNumber;
    }
 
    /**
     * @param gamesNumber the gamesNumber to set
     */
    public void setGamesNumber(int gamesNumber) {
        this.gamesNumber = gamesNumber;
    }
 
    /**
     * @return the numbersLength
     */
    public int getNumbersLength() {
        return numbersLength;
    }
 
    /**
     * @param numbersLength the numbersLength to set
     */
    public void setNumbersLength(int numbersLength) {
        this.numbersLength = numbersLength;
    }
 
    /**
     * @return the winningNumbersLength
     */
    public int getWinningNumbersLength() {
        return winningNumbersLength;
    }
 
    /**
     * @param winningNumbersLength the winningNumbersLength to set
     */
    public void setWinningNumbersLength(int winningNumbersLength) {
        this.winningNumbersLength = winningNumbersLength;
    }
     
    /**
     * Main method
     * 用于测试该类的main方法
     * @param args
     */
    public static void main(String[] args) {
        int i = 20;    // int i = Integer.parseInt(args[0]);
        for(int j = 0; j < i; j++) {
            NumberLotteryGame game1 = new NumberLotteryGame(1, 15, 7);
            game1.showWinningNumberArray();
        }
    }
}

【转】Java数字抽奖游戏核心代码的更多相关文章

  1. 通过游戏学python 3.6 第一季 第九章 实例项目 猜数字游戏--核心代码--猜测次数--随机函数和屏蔽错误代码--优化代码及注释--简单账号密码登陆--账号的注册查询和密码的找回修改--锁定账号--锁定次数--菜单功能'menufile

      通过游戏学python 3.6 第一季 第九章 实例项目 猜数字游戏--核心代码--猜测次数--随机函数和屏蔽错误代码--优化代码及注释--简单账号密码登陆--账号的注册查询和密码的找回修改--锁 ...

  2. 通过游戏学python 3.6 第一季 第八章 实例项目 猜数字游戏--核心代码--猜测次数--随机函数和屏蔽错误代码--优化代码及注释--简单账号密码登陆--账号的注册查询和密码的找回修改--锁定账号--锁定次数

    通过游戏学python 3.6 第一季 第八章 实例项目 猜数字游戏--核心代码--猜测次数--随机函数和屏蔽错误代码--优化代码及注释--简单账号密码登陆--账号的注册查询和密码的找回修改--锁定账 ...

  3. 通过游戏学python 3.6 第一季 第三章 实例项目 猜数字游戏--核心代码--猜测次数--随机函数和屏蔽错误代码 可复制直接使用 娱乐 可封装 函数

       猜数字游戏--核心代码--猜测次数--随机函数和屏蔽错误代码   #猜数字--核心代码--猜测次数--随机函数和屏蔽错误代码 import random secrst = random.rand ...

  4. 通过游戏学python 3.6 第一季 第二章 实例项目 猜数字游戏--核心代码--猜测次数 可复制直接使用 娱乐 可封装 函数

      猜数字游戏--核心代码--猜测次数   #猜数字--核心代码--猜测次数 number=33 amount=3 count=0 while count<=amount: conversion ...

  5. 通过游戏学python 3.6 第一季 第七章 实例项目 猜数字游戏--核心代码--猜测次数--随机函数和屏蔽错误代码--优化代码及注释--简单账号密码登陆--账号的注册查询和密码的找回修改--锁定账号

    #猜数字--核心代码--猜测次数--随机函数和屏蔽错误代码---优化代码及注释--简单账号密码登陆--账号的注册查询和密码的找回修改--锁定账号 #猜数字--核心代码--猜测次数--随机函数和屏蔽错误 ...

  6. 通过游戏学python 3.6 第一季 第六章 实例项目 猜数字游戏--核心代码--猜测次数--随机函数和屏蔽错误代码--优化代码及注释--简单账号密码登陆--账号的注册查询和密码的找回修改 可复制直接使用 娱乐 可封装 函数

    #猜数字--核心代码--猜测次数--随机函数和屏蔽错误代码---优化代码及注释--简单账号密码登陆--账号的注册查询和密码的找回修改 #猜数字--核心代码--猜测次数--随机函数和屏蔽错误代码---优 ...

  7. 通过游戏学python 3.6 第一季 第五章 实例项目 猜数字游戏--核心代码--猜测次数--随机函数和屏蔽错误代码--优化代码及注释--简单账号密码登陆 可复制直接使用 娱乐 可封装 函数

    #猜数字--核心代码--猜测次数--随机函数和屏蔽错误代码---优化代码及注释--账号密码登陆 #!usr/bin/env python #-*-coding:utf-8-*- #QQ12411129 ...

  8. 通过游戏学python 3.6 第一季 第四章 实例项目 猜数字游戏--核心代码--猜测次数--随机函数和屏蔽错误代码--优化代码及注释 可复制直接使用 娱乐 可封装 函数

    #猜数字--核心代码--猜测次数--随机函数和屏蔽错误代码---优化代码及注释 #!usr/bin/env python #-*-coding:utf-8-*- #QQ124111294 import ...

  9. 通过游戏学python 3.6 第一季 第一章 实例项目 猜数字游戏--核心代码 可复制直接使用 娱乐 可封装 函数

    本文实例讲述了python实现的简单猜数字游戏.分享给大家供大家参考.具体如下: 给定一个1-99之间的数,让用户猜数字,当用户猜错时会提示用户猜的数字是过大还是过小,知道用户猜对数字为止,猜对数字用 ...

随机推荐

  1. 启动第一个 KVM 虚机

    本节演示如何使用 virt-manager 启动 KVM 虚机. 首先通过命令 virt-manager 启动图形界面 1 # virt-manager 点上面的图标创建虚机 给虚机命名为 kvm1, ...

  2. 在echars上发布的半圆环形图

    http://gallery.echartsjs.com/editor.html?c=xBJvoMcPfz&v=1

  3. ****如何优雅的用Axure装逼?高保真原型心得分享

    本文核心内容点:- 啥是高保真原型?(附简单说明原型)- Axure可以画出什么水准的高保真?(给示例,开启装逼模式)- 高保真原型图技巧:- 啥时候上高保真?适用场景 and 不适用场景 啥是高保真 ...

  4. docker日志输出文件大小设置以及文件个数限制

    问题描述: 今天有同事运行了一个docker容器,不多时就导致宿主机硬盘直接撑爆,消耗了120G,发生的很是突然. 问题排查: 后续查阅资料,发现是因为docker中的某个进程一直在持续输出,而这些输 ...

  5. 基于centos 创建stress镜像——源码安装stress

    上一篇文章进行了yum安装stress,这次对stress进行源码编译安装,并且生成新的镜像 创建Dockerfile目录 [vagrant@localhost ~]$ mkdir -p /tmp/s ...

  6. 【面试 JVM】【第六篇】JVM调优

    六部分内容: 一.内存模型 1.程序计数器,方法区,堆,栈,本地方法栈的作用,保存那些数据 可以画个大图出来,很清晰 jvm内存模型主要指运行时的数据区,包括5个部分. 栈也叫方法栈,是线程私有的,线 ...

  7. grafana结合influxdb、open-falcon出图配置

    1.https://www.jianshu.com/p/fadcf4d92b0e 2.https://www.jianshu.com/p/21ce6ee143f3 3.http://www.super ...

  8. PHP中extract()函数的妙用

    看cakephp 2.3.8的源代码,很多地方都用 到 compact('name', 'response'); extract($status, EXTR_OVERWRITE); 这样的代码.com ...

  9. react 中的无状态函数式组件

    无状态函数式组件,顾名思义,无状态,也就是你无法使用State,也无法使用组件的生命周期方法,这就决定了函数组件都是展示性组件,接收Props,渲染DOM,而不关注其他逻辑. 其实无状态函数式组件也是 ...

  10. C#语法复习1

    一.C#与.net框架 .net是语言无关的. 程序的执行流程: .net兼容语言的源代码文件 .net兼容编译器 程序集(公共中间语言(CIL)common intermediate languag ...