level 7
取的随机数值可以相同但是地址不能相同 就好比数学中的抓球一样一次抓3个球 我的数组是
int PI[][]=new int[13][4];
int a=0;
int b=0;
for(int i=0;i<13;i++){
a=a+1;
b=0;
for(int j=0;j<4;j++){
b=b+1;
PI[a-1][b-1]=a*10+b;
}
}
2015年10月10日 12点10分
1
level 7
其实我想知道的就是从52个不同的数中取出任意几个数
2015年10月10日 13点10分
2
level 7
生成一个区间内随机整数,然后判断是否重复,如果不重复赋值给数组编号,这样得不…
2015年10月10日 13点10分
4
你的意思是要把二维数组合并成一维?
2015年10月10日 13点10分
如果你的意思是PI[a][b],随机3个不同的a和b的话 那么当a相同时b不同时的数都被抛弃了
2015年10月10日 13点10分
我好头大啊TAT
2015年10月10日 13点10分
回复 芷似暧欣轩air :就是p[i][j],随机两个数ij,判断取值是否合法,如果合法就抽取出来呗…
2015年10月10日 13点10分
level 7
Random random = new Random;
Map<Integer,Integer> map = new HashMap()<Integer,Integer>();
while(true){
int x = random.next(52);
map.put(x,PI[x%13][x/13])
if(map.size() ==3){
break;
}
}
2015年10月10日 13点10分
5
大神 谢谢了 虽然有些看不太懂
2015年10月10日 13点10分
@芷似暧欣轩air PI[x%13][x/13],也就是 PI[0-12][0-4]这就是13*5=65个数了呢 看不懂啊、、、
2015年10月10日 13点10分
![[汗]](/static/emoticons/u6c57.png)
随手写的,语法错误之类的就算了
2015年10月10日 13点10分
level 7
import java.util.HashMap;
import java.util.Map;
import java.util.Random;
public class Solution {
public static void foo() {
int PI[][] = new int[13][4];
int a = 0;
int b = 0;
for (int i = 0; i < 13; i++) {
a = a + 1;
b = 0;
for (int j = 0; j < 4; j++) {
b = b + 1;
PI[a - 1][b - 1] = a * 10 + b;
}
}
Random random = new Random();
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
while (true) {
int x = random.nextInt(52);
map.put(x, PI[x % 13][x / 13]);
if (map.size() == 3) {
break;
}
}
for(Integer key:map.keySet()){
System.out.println("PI["+key%13+"]["+key/13+"] = "+map.get(key));
}
}
public static void main(String[] args) {
foo();
}
}
2015年10月10日 13点10分
6
level 11
可以通过标记的方法来做,比如如果取到某个值就让这个为-1,在循环时判断是否为-1,如果为-1就多一次循环,直到输出3个值为止。
2015年10月10日 14点10分
7