在二维数组中随机产生一个坐标 Random i,j(横纵座标),看对应位置是否0,不是重新random 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Random r1 = new Random();Random r2 = new Random();array[r1.nextInt(6),r2.nextInt(6)] = 0; 把这个二维数组映射到一个BitSet,0 clear ,1 set使用nextSetBit 取得 为1 的索引,随机选一个 clear 是个方法还有个方法,分布的不是那么均匀,但是够用了,只需要循环1次 Random ran = new Random(); int num_1 =....// 1的总个数 ,如果没有的话,分布的不会那么平均int pos_x ,pos_y ;for( int i = 0; i < a.length ;i ++){ for(int j = 0; j < a[i].length;j++){ if(a[i][j] == 0){ continue; } else { pos_x = i; pos_y = j; if(Ran.nextInt(num_1) == 1){//范围内判断等于几都一样 不会影响分布 return; } } }} 我看效率没有问题,可以看看一千万次的random需要的时间是多少,我的估计是10ms数量级。 int ran = new Random().Ran.nextInt(num_1); int num_1 =....// 1的总个数 没有的话 最近根据实际需求 办int pos_x ,pos_y ;for( int i = 0; i < a.length ;i ++){ for(int j = 0; j < a[i].length;j++){ if(a[i][j] == 0){ continue; } else { pos_x = i; pos_y = j; if(ran == 1){//优化了下 不需要每次循环都产生1个随机数 return a[i][j]; } } }}return a[pos_x][pos_y]; 关于目录的问题 java接口获取第三方软件系统的返回结果问题 关于JAVA静态数组问题 急 在线等 excuse me 菜鸟冒死提问 如何活动控制台的输入内容? 请教 javax.xml.parsers.*;在那个包下!? 一个think in java的翻译问题 关于邮件显示的问题 慕课网滴滴打车系统 调查:大家对对象容器学习的总结,谢谢,奉上全部分数100分 为什么图片会重叠?
Random r2 = new Random();
array[r1.nextInt(6),r2.nextInt(6)] = 0;
使用nextSetBit 取得 为1 的索引,随机选一个 clear
int num_1 =....// 1的总个数 ,如果没有的话,分布的不会那么平均
int pos_x ,pos_y ;
for( int i = 0; i < a.length ;i ++){
for(int j = 0; j < a[i].length;j++){
if(a[i][j] == 0){
continue;
}
else {
pos_x = i;
pos_y = j;
if(Ran.nextInt(num_1) == 1){//范围内判断等于几都一样 不会影响分布
return;
}
}
}
}
int ran = new Random().Ran.nextInt(num_1);
int num_1 =....// 1的总个数 没有的话 最近根据实际需求 办
int pos_x ,pos_y ;
for( int i = 0; i < a.length ;i ++){
for(int j = 0; j < a[i].length;j++){
if(a[i][j] == 0){
continue;
}
else {
pos_x = i;
pos_y = j;
if(ran == 1){//优化了下 不需要每次循环都产生1个随机数
return a[i][j];
}
}
}
}
return a[pos_x][pos_y];