我想写个函数 返回一个随机数
int randomEx(int min,int max) //要返回min-max中的任意数,试了半天 写不出来
{}
2:写了个扫雷的程序,
private boolean[][] mimeArray;
private mineNum=99; //用户自定义雷的数量
private curNum=0; //当前已分配雷数
mineArray=new boolean[16][30];
for(int i=0; i<16; i++)
{
for(int j=0; j<30; j++)
{
if(curNum<mineNum)
{
int v=(int)Math.round(Math.random());
if(v==1)
{
mineArray[i][j]=true;
curNum++;
}
if(v==0) mineArray[i][j]=false;
} }
}
这样雷都集中在前面了,后面都没雷,然后我把雷区划分为4块,每块分配 总雷数/4,效果也不怎么好,有没有办法让雷区想windows自带的那个扫雷游戏那样能随机排列的好点的代码?
int randomEx(int min,int max) //要返回min-max中的任意数,试了半天 写不出来
{}
2:写了个扫雷的程序,
private boolean[][] mimeArray;
private mineNum=99; //用户自定义雷的数量
private curNum=0; //当前已分配雷数
mineArray=new boolean[16][30];
for(int i=0; i<16; i++)
{
for(int j=0; j<30; j++)
{
if(curNum<mineNum)
{
int v=(int)Math.round(Math.random());
if(v==1)
{
mineArray[i][j]=true;
curNum++;
}
if(v==0) mineArray[i][j]=false;
} }
}
这样雷都集中在前面了,后面都没雷,然后我把雷区划分为4块,每块分配 总雷数/4,效果也不怎么好,有没有办法让雷区想windows自带的那个扫雷游戏那样能随机排列的好点的代码?
解决方案 »
- 关于ascii问题
- 对于JAVA进程自动退出的问题
- 如何清除applet中已经画好的矢量图或者图片
- jdbcodbc驱动和微软的jdbc驱动,还有第三方驱动jdns有什么差别?
- 请帮我看看这个问题是什么意思?
- 问一个servlet和applet通信地问题,请各位来看一下。
- 请问大家生成一个*.java文件后如何编译
- 高分火速求解,请在线朋友回答:java自定义类怎样生成实例数组?( className[] N=new className[X];怎么不行?)
- 请问在JB5里怎样加入其它的JAR文件??我觉得在这方面比VJA3。5比JB5方便些
- 请教一个问题
- swing拖动图片
- jtable中怎么实现隐藏行?
楼主可以for (int i = 1000; i-- > 0; System.out.println(Math.random()));看一下
boolean temp,index;
java.util.Random ran = new java.util.Random();
for ( int i=2; i<array.length-1; i++ )
{
index = ran.nextInt(i);
temp = array[i+1];
array[i+1] = array[index];
array[index] = temp;
}
或许这样可能比较好
* 随机处理器<br>
* 根据给定的条件,产生随机数
*/
public final class Randomor implements Serializable {
/**
* 得到随机的整数数组
*
* @param lowerLimit 得到整数的最小数(包含)
* @param upperLimit 得到整数的最大数(不包含)
* @param count 得到的总的整数的数量
*/
public static int[] randomInts(int lowerLimit, int upperLimit, int count) { if (count < 0) {
count = 0;
} if (lowerLimit > upperLimit) {
int tmp = lowerLimit;
lowerLimit = upperLimit;
upperLimit = tmp;
} int[] noSames = new int[count]; final Random random = new Random(); int getInt;
for (int i = 0; i < count; i++) {
while (true) {
getInt = randomInt(random, lowerLimit, upperLimit);
if (isExist(noSames, getInt, i) == false) {
break;
}
}
noSames[i] = getInt;
} return noSames;
} /**
* 得到随机的整数
*
* @param random 随机类
* @param lowerLimit 得到整数的最小数(包含)
* @param upperLimit 得到整数的最大数(不包含)
* @return int 随机的整数
*/
public static int randomInt(final Random random, int lowerLimit,
int upperLimit) { if (lowerLimit == upperLimit) {
return upperLimit;
} if (lowerLimit > upperLimit) {
int tmp = lowerLimit;
lowerLimit = upperLimit;
upperLimit = tmp;
} /*
* if (random == null) { random = new Random(); }
*/ int tmpInt;
while (true) {
tmpInt = random.nextInt(upperLimit);
if (tmpInt >= lowerLimit) {
return tmpInt;
}
}
} /**
* 判断给定的整数数组中指定位置之前是否存在某个整数
*
* @param ints 整数数组
* @param one 整数
* @param length 指定位置(如:5代表判断数组前5个元素)
* @return boolean 是否存在
*/
public static boolean isExist(int[] ints, int one, int length) { if (length > ints.length) {
length = ints.length;
} for (int i = 0; i < length; i++) {
if (ints[i] == one) {
return true;
}
}
return false;
}
}
-----------------------
你的意思是位数不固定么?
0.6611047280894474
0.2698207807805847
0.35561448232717285
0.878598378343517
0.1839333589871779
0.4251291881879109
0.7437364354497129
0.5024718751941607
0.12362952733209176
0.24541547943673947
0.24804658587303785
0.7690149295136732
0.7208547139420298
0.7571267676625743
0.26332094865441913
0.6182484028580137
0.3597982807727689
0.30715101108069454
用随机数I%5判断是否为0,设置TRUE OR FLASE
{return ((int)(Math.random()*(max-min)))+min; }
这么简单,有时候换种思维方式思路更清醒
{
Random r=new Random();
double l=r.newDouble(max-min);
l=l+min;
return l;
}
这样可以不
for(int i=0;i<99;i++){
do{
x=(int)(Math.random()*16);
y=(int)(Math.random()*30);
}while(mineArray[x][y]==false);
mineArray[x][y]=true;
}