public static void main(String[] args) {
String str= "";
int n=0;
int c=0;
for (int i = 0; i < 7; i++) {
if(flag()){
c++;
str+=c<4 charA():charB();
continue;
}
n++;
str+=n<5 charB():charA();
}
Systemoutprintln(str);
}
private static boolean flag(){
int i=(int) (Mathrandom()1000);
return i%2==0;
}
private static String charA(){
return ""+(char)(Mathrandom()26+'A');
}
private static String charB(){
return ""+(int)(Mathrandom()10);
}
这是我以前写的一个随机抽取5张扑克牌程序,你参考一下吧:import javautil;public class Card{
public static void main(String[] args){
String[] cardType={"clubs","diamonds","spades","hearts"};//牌色
String[] cardNum={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};//排数
ArrayList card=new ArrayList();//新建一副牌
for(int i=0;i<cardTypelength;i++){
for(int j=0;j<cardNumlength;j++){
cardadd(cardType[i]+"_"+cardNum[j]);
}
}
cardadd("big_King");//添加大小王
cardadd("small_King");
for(int i=0;i<5;i++){//随机发5张牌
int index=readCard(card);
cardremove(index);
}
}
public static int readCard(ArrayList al){//读牌
Random rand=new Random();
int randNumber=randnextInt(alsize());
String card=alget(randNumber)toString();
Systemoutprintln (chinaShow(card));
return randNumber;
}
public static String chinaShow(String card){//牌色中文显示
StringBuffer buffer=new StringBuffer();
String[] thisCard=cardsplit("_");
String cardType=thisCard[0];
String cardNum=thisCard[1];
if(cardTypeequals("clubs")){
bufferappend("梅花");
}
else if(cardTypeequals("diamonds")){
bufferappend("方块");
}
else if(cardTypeequals("spades")){
bufferappend("黑桃");
}
else if(cardTypeequals("hearts")){
bufferappend("红心");
}
else if(cardTypeequals("big")){
bufferappend("大王");
}
else if(cardTypeequals("small")){
bufferappend("小王");
}
return bufferappend(cardNum)toString();
}
}
调试好了 直接用 public static void main(String[] args) { Random rand = new Random();//定义随机数产生器 List list_One = new ArrayList();//定义一等奖数字集合 List list = null; //用list时 /list = new ArrayList();//定义100个随机数 集合 for(int i = 0; i < 100;){//产生100个3位数 的随机不重复数字 if(check(randnextInt(899) + 100,list)){ i++; } }/ //用set时 Set set = new HashSet(); while(setsize() < 100){ setadd(randnextInt(899) + 100); } list = new ArrayList(set); for(int k = 0; k < 5;){//产生5个随机一等奖 if(check(randnextInt(100),list,list_One)) k++; } } for(int a = 0; a < list_Onesize();a++){ Systemoutprintln(list_Oneget(a)); } } / 验证该数字是否在集合中 @param i @param list @return / public static boolean check(int i,List list){ if(listsize() == 0){ listadd(i); }else{ for(int j = 0; j < listsize(); j++){ if(i == listget(j)){ return false; } } listadd(i); } return true; } / 抽取随机数作为中奖的下标(重载) @param i @param list @param list_One @return / public static boolean check(int i,List list,List list_One){ if(listsize() == 0){ list_Oneadd(listget(i)); }else{ for(int j = 0; j < listsize(); j++){ if(i == listget(j)){ return false; } } list_Oneadd(listget(i)); } return true; }
抽取问题, 重点是 同一个学号不能重复被抽取
解决办法很多,
比如数组可以使用下标来标记,号码是否被使用,使用了就继续下一次抽取
也可以使用集合来抽取,把集合顺序打乱,然后随便抽几个就可以了
参考代码:数组法
import javautilRandom;public class Test {
public static void main(String[] args) {
int stuNums=30;
int[] nums=new int[stuNums];//存储学号的数组
boolean[] flags=new boolean[stuNums];//标记,用于标记对应下标的学号是否已经被抽取过了
for (int i = 0; i < stuNums; i++) {
nums[i]=i+1;//给学号赋值
}
Random r=new Random();
while(true){
int index = rnextInt(stuNums);
if(!flags[index]){
Systemoutprintln("A等:"+nums[index]);
flags[index]=true; //标记已经被使用过了
break;
}
}
for (int i = 0; i < 2; i++) {
int index = rnextInt(stuNums);
if(!flags[index]){
Systemoutprintln("B等:"+nums[index]);
flags[index]=true;
}else{
i--;//如果已经被抽取过了 ,那么i建议,再次循环
}
}
for (int i = 0; i < 3; i++) {
int index = rnextInt(stuNums);
if(!flags[index]){
Systemoutprintln("c等:"+nums[index]);
flags[index]=true;
}else{
i--;
}
}
}
}
集合法
import javautilArrayList;import javautilCollections;
public class Test2 {
public static void main(String[] args) {
int stuNums=20;
ArrayList<Integer> list=new ArrayList<Integer>();
for (int i = 0; i < stuNums; i++) {
listadd(i+1);
}
Systemoutprintln("有序"+list);
Collectionsshuffle(list);//打乱顺序
Systemoutprintln("乱序"+list);
Systemoutprintln("A等"+listget(0));
Systemoutprintln("B等"+listget(1));
Systemoutprintln("B等"+listget(2));
Systemoutprintln("C等"+listget(3));
Systemoutprintln("C等"+listget(4));
Systemoutprintln("C等"+listget(5));
}
}
以上就是关于java编写一个程序:假设一个车牌号码由三个字母和四个数字组成,编写一个程序,随机生成一个车牌全部的内容,包括:java编写一个程序:假设一个车牌号码由三个字母和四个数字组成,编写一个程序,随机生成一个车牌、java中随机抽一个数用什么函数、用java设计程序。问题描述:公司总人数为100,计划能随机抽出每一个获奖者,一等奖10%,二等奖等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)