按照你的要求編寫的35選7彩票生成器的Java程序如下
創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),晉州企業(yè)網(wǎng)站建設(shè),晉州品牌網(wǎng)站建設(shè),網(wǎng)站定制,晉州網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,晉州網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。
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個數(shù)排序
Arrays.sort(a);
//輸出35選7的結(jié)果?并在個位數(shù)前補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());
}
}
運行結(jié)果
05,10,14,16,22,28,31
多試幾次會有不同結(jié)果
/**
?*?生成指定個數(shù)的小于指定最大值的隨機數(shù),并存放在list中返回
?*?
?*?@param?length
?*????????????生成數(shù)的個數(shù)
?*?@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--);
問這個問題的應(yīng)該都是新手,所以我就解釋一下這個老哥寫的代碼意思;
首先創(chuàng)建一個30長度的數(shù)組,遍歷賦值,這個里面數(shù)字為1-30的數(shù)組就是取值范圍;
我們會從這個數(shù)組里取到我們需要的隨機數(shù).
然后創(chuàng)建一個7長度的答案數(shù)組,這個數(shù)組用來裝答案.
生成隨機數(shù)的random要放在for循環(huán)里面,每循環(huán)一次都能獲得不同的隨機數(shù).
這里注意26行的randomNum--,每循環(huán)一次,我們的取值范圍下標(biāo)就提前一位,也就是說,第一次賦值,取值范圍是30個數(shù)全部,第二次--之后變成了前29個數(shù),每循環(huán)一次減去一,每次循環(huán)都把最后一位數(shù)剔除出取值范圍;
從取值范圍數(shù)組里隨機拿一個數(shù)放到答案數(shù)組第一位,然后這個數(shù)我們就跟最后一位數(shù)交換,
隨后randomNum--,我們已經(jīng)取過的這個數(shù),跟最后一位數(shù)交換,而且退出了取值范圍了,
舉個例子,答案數(shù)組現(xiàn)在是空的{}, 取值范圍數(shù)組現(xiàn)在有{1,2,3};
第一次循環(huán)之后,假如答案數(shù)組變成:{1},那個取值范圍就變成了{(lán)3,2}1,已經(jīng)取值過的1,因為randomNum--,已經(jīng)跟最后一位交換并且剔除了.
自己寫的,不懂可以問我
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("雙色球隨機數(shù)");
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)+" 藍(lán)色球號碼:"+(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)+" 藍(lán)色球號碼:"+(rd.nextInt(15)+1));
}
}
public static void main(String[] args)//throws Exception
{
new shuangSeQiu().init();
}
}
public class Lottery {
private int m = 1000;//發(fā)放獎券的數(shù)量
private int n = 2;//獎品的數(shù)量
public boolean getLottery(){
boolean isLottery = false;
double d = (double)n/(double)m;//中獎概率
double r = Math.random();//0~1之間的隨機數(shù),包括0
if(rd){//如果隨機數(shù)小于概率 那么中獎
n--;//獎品數(shù)量-1
isLottery = true;
}
m--;//獎券數(shù)量-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(); // 創(chuàng)建suiji方法
int blue = suiji.nextInt(16);//從0到16中選一個數(shù)字個藍(lán)球
while(blue==0){
blue=suiji.nextInt(16);
}//如果選到了0,再選一次給blue
int red[] = new int[6];// 用一個6個元素的數(shù)組裝紅球
for (int i = 0; i 6; i++) {
red[i] = suiji.nextInt(33); // 隨機分配0到33的整數(shù)
if (red[i] == 0) {i--;}
if (i == -1) {i = 0;}
for (int j = 0; j i; j++) {
while (red[i] == red[j]) {i--;}// 發(fā)現(xiàn)相同的從新回去生成一個
}
}
System.out.print("紅球:");
for (int k = 0; k red.length; k++) {
System.out.print(red[k] + " ");// 輸出數(shù)組red
}
System.out.print("藍(lán)球:"+blue);
} else
System.out.println("fuck you~");
}
}
應(yīng)該可以了,可以產(chǎn)生一組。。。如果樓主你中頭獎了,送我套房好了哈^0^