正文
java彩票随机数代码,彩票随机数算法
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
用java编写,模仿福利彩票23选5,随机生成5个不同的1~23的整数
/**
* 生成指定个数的小于指定最大值的随机数,并存放在list中返回
*
* @param length
* 生成数的个数
* @param max
* 最大值
* @return
*/
public static ListInteger getRedRandomList(int length, int max) {
ListInteger list = new ArrayListInteger();
while (list.size() length) {
int ran = 0;
ran = (int) (Math.random() * 100);
if (!(ran == 0)) {
if (ran max) {
if (list.size() == 0) {
list.add(ran);
} else {
if (!list.contains(ran)) {
list.add(ran);
}
}
} else {
ran = ran / 3;
if (!(ran == 0)) {
if (list.size() == 0) {
list.add(ran);
} else {
if (!list.contains(ran)) {
list.add(ran);
}
}
}
}
}
}
return list;
}
用Java程序写一个彩票的模拟程序生成6个红球(1-33的随机数),1个蓝球(1-16的随机数),随机数可以重复
import java.util.Random;
import java.util.Scanner;
public class DoubleBalls {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("是否机选一组双色球号码?(Y/N)");
Scanner input = new Scanner(System.in);
char a = input.next().charAt(0); // 输入一个char字符,0位即是第一位
if (a == 'Y' || a == 'y') {
Random suiji = new Random(); // 创建suiji方法
int blue = suiji.nextInt(16);//从0到16中选一个数字个蓝球
while(blue==0){
blue=suiji.nextInt(16);
}//如果选到了0,再选一次给blue
int red[] = new int[6];// 用一个6个元素的数组装红球
for (int i = 0; i 6; i++) {
red[i] = suiji.nextInt(33); // 随机分配0到33的整数
if (red[i] == 0) {i--;}
if (i == -1) {i = 0;}
for (int j = 0; j i; j++) {
while (red[i] == red[j]) {i--;}// 发现相同的从新回去生成一个
}
}
System.out.print("红球:");
for (int k = 0; k red.length; k++) {
System.out.print(red[k] + " ");// 输出数组red
}
System.out.print("蓝球:"+blue);
} else
System.out.println("fuck you~");
}
}
应该可以了,可以产生一组。。。如果楼主你中头奖了,送我套房好了哈^0^
java:使用数组,循环,if判断及随机数工具类完成彩票生成器
按照你的要求编写的35选7彩票生成器的Java程序如下
import java.util.Arrays;
public class F {
public static String random() {
int []a=new int[7];
int count=0;
while(count7){
boolean flag=false;
int tmp=(int)(Math.random()*35)+1;
for(int i=0;ia.length;i++){
if(tmp==a[i]){
flag=true;
}
}
if(flag==false){
a[count]=tmp;
count++;
}
}
//对选出的7个数排序
Arrays.sort(a);
//输出35选7的结果 并在个位数前补0
String s="";
for(int i=0;ia.length;i++){
if(i==a.length-1){
if(a[i]10){
s=s+"0"+a[i];
}else{
s=s+a[i];
}
}else{
if(a[i]10){
s=s+"0"+a[i]+",";
}else{
s=s+a[i]+",";
}
}
}
return s;
}
public static void main(String[] args) {
System.out.println(random());
}
}
运行结果
05,10,14,16,22,28,31
多试几次会有不同结果
写一彩票程序,要求能随机产生并按照升序输出1-30之间的7个数,且其中任意两个数字不能重复,Java程序
一楼的老哥给的答案是没问题的,而且最妙的就是那个26行的(randomNum--);
问这个问题的应该都是新手,所以我就解释一下这个老哥写的代码意思;
首先创建一个30长度的数组,遍历赋值,这个里面数字为1-30的数组就是取值范围;
我们会从这个数组里取到我们需要的随机数.
然后创建一个7长度的答案数组,这个数组用来装答案.
生成随机数的random要放在for循环里面,每循环一次都能获得不同的随机数.
这里注意26行的randomNum--,每循环一次,我们的取值范围下标就提前一位,也就是说,第一次赋值,取值范围是30个数全部,第二次--之后变成了前29个数,每循环一次减去一,每次循环都把最后一位数剔除出取值范围;
从取值范围数组里随机拿一个数放到答案数组第一位,然后这个数我们就跟最后一位数交换,
随后randomNum--,我们已经取过的这个数,跟最后一位数交换,而且退出了取值范围了,
举个例子,答案数组现在是空的{}, 取值范围数组现在有{1,2,3};
第一次循环之后,假如答案数组变成:{1},那个取值范围就变成了{3,2}1,已经取值过的1,因为randomNum--,已经跟最后一位交换并且剔除了.
Java如何实现随机数?
可以使用Random类产生随机数,利用HashSet集合类过滤掉重复值,因为HashSet具有不重复性,重复的值,添加不成功,这样保证了集合里的数是唯一的。
以下代码供你参考一下:
package com.dusd;
import java.util.*;
public class RandomDemo {
public static void main(String[] args) {
//HashSet类具有唯一性
SetInteger distinctNumbers = new HashSetInteger();
Random rand = new Random();
//通过循环产生6个不重复的100以内的整数
for (int i = 0; i 6; i++)
if (distinctNumbers.add(new Integer(rand.nextInt(100))));
System.out.println(distinctNumbers);
}
}
java程序编写双色球代码
截图:
选取红色球号码方法:
/**
* 随机选取红色球
*
* 获取1~33其中一个数
*
* 0 = Math.random 1
*/
private int randomOneRedValue() {
int randomValue = (int) (Math.random() * 33 + 1);
return randomValue;
}
选取蓝色球号码方法:
/**
* 随机选取蓝色球号码
*
* 获取1~16的数值
*
* @return
*/
private int randomOneBlueValue() {
int randomValue = (int) (Math.random() * 15 + 1);
return randomValue;
}
测试:
public class Test1 {
public static void main(String[] arg) {
Test1 localTest1 = new Test1();
// 双色球 :红色球号码 + 蓝色球号码
// 六个红色球和一个蓝色球号码
// 红色球号码从1~33中选择
// 蓝色球号码从1~16中选择
// 一等奖:七个号码相符(六个红色号码和一个蓝色球号码)(红色球号码顺序不限,下同)
// 二等奖:六个红色球号码相符;
// 三等奖:五个红色球号码,或者四个红色球号码和一个蓝色球号码相符;
// 四等奖:五个红色球号码,或者三个红色球号码和一个蓝色球号码相符;
// 五等奖:四个红色球号码,或者三个红色球号码和一个蓝色球号码相符;
// 六等奖:一个蓝色球号码相符(有误红色球号码相符均可);
// 例如:红色球号码 01 06 13 19 24 28 蓝色球号码 16
System.out.println("开始出奖");
// 定义双色球数组,大小为7
String[] values = new String[7];
for (int i = 0; i 7; i++) {
if (i == 6) {
int blueValue = localTest1.randomOneBlueValue();
if (blueValue 10) {
values[i] = "0" + blueValue;
} else {
values[i] = String.valueOf(blueValue);
}
} else {
int redValue = localTest1.randomOneRedValue();
if (redValue 10) {
values[i] = "0" + redValue;
} else {
values[i] = String.valueOf(redValue);
}
}
}
System.out.println();
System.out.println("出奖结束");
System.out.println();
System.out.print("双色球开奖号码:");
// 打印双色球号码
for (String value : values) {
System.out.print(" " + value);
}
}
}