重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
按照你的要求编写的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
多试几次会有不同结果
/**
* 生成指定个数的小于指定最大值的随机数,并存放在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;
}
一楼的老哥给的答案是没问题的,而且最妙的就是那个26行的(randomNum--);
问这个问题的应该都是新手,所以我就解释一下这个老哥写的代码意思;
首先创建一个30长度的数组,遍历赋值,这个里面数字为1-30的数组就是取值范围;
我们会从这个数组里取到我们需要的随机数.
然后创建一个7长度的答案数组,这个数组用来装答案.
生成随机数的random要放在for循环里面,每循环一次都能获得不同的随机数.
这里注意26行的randomNum--,每循环一次,我们的取值范围下标就提前一位,也就是说,第一次赋值,取值范围是30个数全部,第二次--之后变成了前29个数,每循环一次减去一,每次循环都把最后一位数剔除出取值范围;
从取值范围数组里随机拿一个数放到答案数组第一位,然后这个数我们就跟最后一位数交换,
随后randomNum--,我们已经取过的这个数,跟最后一位数交换,而且退出了取值范围了,
举个例子,答案数组现在是空的{}, 取值范围数组现在有{1,2,3};
第一次循环之后,假如答案数组变成:{1},那个取值范围就变成了{3,2}1,已经取值过的1,因为randomNum--,已经跟最后一位交换并且剔除了.
自己写的,不懂可以问我
import java.util.Random;
import java.awt.*;
import java.awt.event.*;
public class shuangSeQiu implements ActionListener{
int i,k;
static int rm,rr;
int [] a = new int [33];
Frame f = new Frame("双色球随机数");
TextField tf = new TextField();
Random rd = new Random();
public shuangSeQiu()
{
for(i=0;i33;i++)
{
a[i] = i;
}
f.setLayout(new BorderLayout());
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
public void init()
{
tf.addActionListener(this);
Button b = new Button("开始");
b.addActionListener(this);
f.add(tf,"North");
f.add(b);
f.setSize(300,300);
f.setVisible(true);
}
public void actionPerformed(ActionEvent e)
{
if(e.getActionCommand().equals("开始"))
//tf.setText(""+(rd.nextInt(33)+1)+" "+(rd.nextInt(33)+1)+" "+(rd.nextInt(33)+1)+" "+(rd.nextInt(33)+1)+" "+(rd.nextInt(33)+1)+" "+(rd.nextInt(33)+1)+" 蓝色球号码:"+(rd.nextInt(15)+1));
{
/*rr = new Random().nextInt(33);
rm = new Random().nextInt(33);*/
for(i=0;i33;i++)
{
rr = new Random().nextInt(33);
rm = new Random().nextInt(33);
System.out.print(rr+" ");
k=a[rm];
a[rm]=a[rr];
a[rr]=k;
}
tf.setText("红色球号码:"+(a[0]+1)+" "+(a[1]+1)+" "+(a[2]+1)+" "+(a[3]+1)+" "+(a[4]+1)+" "+(a[5]+1)+" 蓝色球号码:"+(rd.nextInt(15)+1));
}
}
public static void main(String[] args)//throws Exception
{
new shuangSeQiu().init();
}
}
public class Lottery {
private int m = 1000;//发放奖券的数量
private int n = 2;//奖品的数量
public boolean getLottery(){
boolean isLottery = false;
double d = (double)n/(double)m;//中奖概率
double r = Math.random();//0~1之间的随机数,包括0
if(rd){//如果随机数小于概率 那么中奖
n--;//奖品数量-1
isLottery = true;
}
m--;//奖券数量-1
return isLottery;
}
}
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^