JAVA 随机数 Random,求高手

jason_deng 2012-08-13 06:00:39
* 随机产生7个随机数,前六个数字的范围是从1至33,第7个数的范围是从1至22。
*
* 就只有一个要求
* 前六个的数字是1至33之间不重复的数。


import java.util.Random;

public class SSQiu {

/**
* @param args
* 随机产生7个随机数,前六个数字的范围是从1至33,第7个数的范围是从1至22。
*
* 就只有一个要求
* 前六个的数字是1至33之间不重复的数。
*
* 这个程序感觉写的很复杂,有没有简单一点的写法,求高手
*
*/

public static final int SCOPE_1_6 = 33; //The first sixth number's scope is from 1 to 33,including 1 and 33 ,(1 <= X <= 33)

public static final int SCOPE_7 = 22; // The first seventh number's scope is from 1 to 22,including 1 and 22 ,(1 <= X <= 22)

public static final int NUM = 7; // The ShuangSeQiu including 7 numbers


private static boolean alreadyExisted(int[] result, int key ,boolean firstTime ,int index) {

boolean flag = false;

if(!firstTime){
for (int i = 0; i < index ; i++) {

if (result[i] == key) {

flag = true;

break;

}
}
}


return flag;

}

public static void main(String[] args) {
// TODO Auto-generated method stub
Random rd = new Random();

int[] result = new int[NUM];

for (int i = 0; i < result.length; i++) {

result[i] = -1;
}
boolean[] flag = new boolean[SCOPE_1_6 + 1];

for (int i = 1; i <= SCOPE_1_6; i++) {

flag[i] = true;

}


int key = 1;

int index = 0;

int count = 0;

boolean firstTime = true;

while (true) {

key = Math.abs(rd.nextInt() % (SCOPE_1_6 + 1));
while (key < 1) {
key = Math.abs(rd.nextInt() % (SCOPE_1_6 + 1));
}

result[index] = key;

if (!alreadyExisted(result, key,firstTime,index)) {

index++;
count++;

}
if(index >= NUM -1 ){
break;
}

firstTime = false;

}



key = Math.abs(rd.nextInt() % (SCOPE_7 + 1));
while (key < 1) {
key = Math.abs(rd.nextInt() % (SCOPE_7 + 1));
}
result[NUM - 1] = key;

int sum = 0;

System.out.print("The " + NUM + " random's number is :");

for (int i = 0; i < result.length; i++) {
sum = sum + result[i];

System.out.print("["+result[i] + "] ");

}

System.out.println( );
System.out.println("sum[" + result.length + "] = " + sum );
}

}


...全文
219 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
jason_deng 2012-08-14
  • 打赏
  • 举报
回复
Thanks ioe_gaoyong and nmyangym
nmyangym 2012-08-13
  • 打赏
  • 举报
回复
借助Collections的shuffle()写了一个,供参考。

package csdn.arrays;
import java.util.*;
public class SevenNumber
{
public static final int SCOPE_1_6 = 33;
public static final int SCOPE_7 = 22;
public static final int NUM = 7;

public static void main(String[] args)
{
List<Integer> list=new ArrayList<Integer>(); //存放1-33的对应的Integer对象
int[] int7=new int[NUM];
Random rand=new Random();
for(int i=0;i<SCOPE_1_6;i++)
{
list.add(i+1); //自动装箱。
}

Collections.shuffle(list); //打乱顺序.
for(int i=0;i<NUM-1;i++) //前6个数取自打乱的list.
{
int7[i]=list.get(i); //自动拆箱.
}
int7[NUM-1]=1+rand.nextInt(SCOPE_7); //第7个数取1-22之间的随机数。

System.out.println(Arrays.toString(int7)); //输出。
}
}
风尘中国 2012-08-13
  • 打赏
  • 举报
回复
你参考下,用java提供的随机数生成

import java.util.List;
import java.util.ArrayList;


public class RandomNumberFactory {
public static final int NUM = 7;

public List<Integer> getRandowNumbers(){
List<Integer> list=new ArrayList<Integer>();

for(int j=0;list.size()!=6;j++){
int i=1+(int)(Math.random()*33);

if(!list.contains(i)&&list.size()!=6){
list.add(i);
}
}
for(int i=0;list.size()!=7;i++){
int j=1+(int)(Math.random()*22);

if(!list.contains(j)&&list.size()!=7){
list.add(j);
}
}

// i=1+(int)(Math.random()*22);

return list;
}

public static void main(String[] args) {
RandomNumberFactory factory=new RandomNumberFactory();
for(int i:factory.getRandowNumbers()){
System.out.println(i);
}
}
}

51,396

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧