本帖最后由 王琪 于 2014-3-1 21:53 编辑
猜数
/*
* 1>生成随机数
Random random = new Random();
Random random = new Random(100);//指定种子数100
random调用不同的方法,获得随机数。
如果2个Random对象使用相同的种子(比如都是100),并且以相同的顺序调用相同的函数,那它们返回值完全相同。如下面代码中两个Random对象的输出完全相同
import java.util.*;
class TestRandom {
public static void main(String[] args) {
Random random1 = new Random(100);
System.out.println(random1.nextInt());
System.out.println(random1.nextFloat());
System.out.println(random1.nextBoolean());
Random random2 = new Random(100);
System.out.println(random2.nextInt());
System.out.println(random2.nextFloat());
System.out.println(random2.nextBoolean());
}
}
2>指定范围内的随机数
随机数控制在某个范围内,使用模数运算符%
import java.util.*;
class TestRandom {
public static void main(String[] args) {
Random random = new Random();
for(int i = 0; i < 10;i++) {
System.out.println(Math.abs(random.nextInt())%10);
}
}
}
获得的随机数有正有负的,用Math.abs使获取数据范围为非负数
3>获取指定范围内的不重复随机数
import java.util.*;
class TestRandom {
public static void main(String[] args) {
int[] intRet = new int[6];
int intRd = 0; //存放随机数
int count = 0; //记录生成的随机数个数
int flag = 0; //是否已经生成过标志
while(count<6){
Random rdm = new Random(System.currentTimeMillis());
intRd = Math.abs(rdm.nextInt())%32+1;
for(int i=0;i<count;i++){
if(intRet==intRd){
flag = 1;
break;
}else{
flag = 0;
}
}
if(flag==0){
intRet[count] = intRd;
count++;
}
}
for(int t=0;t<6;t++){
System.out.println(t+"->"+intRet[t]);
}
}
Math.random也可以
比如说你想要0-10之间的随机数
你可以这样写
(int)(Math.random()*10);
JAVA产生指定范围的随机数》
《JAVA产生指定范围的随机数》
产生机制:
产生Min-Max之间的数字
实现原理:
Math.round(Math.random()*(Max-Min)+Min)
long Temp; //不能设定为int,必须设定为long
//产生1000到9999的随机数
Temp=Math.round(Math.random()*8999+1000);
*/
- package dom;
- import java.util.*;
- public class text1 {
- public static void main(String[]args){
- int n,m,i=0;
- Random rand=new Random(System.currentTimeMillis());
- System.out.println("请输入所猜的数");
- n=Math.abs(rand.nextInt())%100+1;
- Scanner in=new Scanner(System.in);
- do{System.out.println(n);
- m=Integer.valueOf(in.nextLine().trim());
- i++;
- if(m>n){
- System.out.println("猜的数太大");
- }
- else if(m<n){
- System.out.println("猜的数小了");
- }
- }while(m!=n);
- System.out.println("答对了!共猜了"+i+"次");
- if(i<=5)System.out.println("hao");
- else{
- System.out.println("bu");
- }
-
- }
- }
复制代码
骰子
- package dom;
- import java.io.IOException;
- import java.util.*;
- public class Text2 {
- public static void main(String[]args) throws IOException{
- int c;
- int n=0;
- int i,m;
- Scanner in=new Scanner(System.in);
- do{
- System.out.println("设骰子数量");
- n=in.nextInt();
- System.out.println("输入本轮参赛的人数");
- c=in.nextInt();
- if (c==0)break;
- else if(c>0){
- for(i=0 ;i<c ;i++ ){
- System.out.println("第"+(i+1)+"玩家透出的骰子为");
- play(n);
- }
- }else{break;}
- }while(true);
- }
- static void play(int n){
- Random rand=new Random(System.currentTimeMillis());
- int i,m=0,t=0;
- for( i=0; i<n;i++ ){
- t=Math.abs(rand.nextInt())%6+1;
- m+=t;
- System.out.println("第"+(i+1)+"粒"+t);
- }
- System.out.println("总点数"+m);
- }
- }
复制代码
|