【发布时间】:2020-09-24 05:36:04
【问题描述】:
我生成了一个固定长度的char数组形式的随机二进制数
public char[] biNum(int length) {
char[] biStr = new char[length];
for (int i=0; i<length; i++) {
biStr[i] = (char)r.nextInt(1);
}
return biStr;
}
如何在其中的随机位置获得多个具有增量“*”的数组? 例子:如果长度是8,那么
100*10*1 has 2 '*'
10*01*** has 4 '*'
0******1 has 6 '*'
我不想在这里获取二维数组。但如果这更容易,那我也可以接受
for (i = 2; i < length; i+2){
biNum(20);
//some method that adds i '*' in biStr
System.out.println(biStr);
}
我的想法是,在 for 循环中添加另一个循环
for (j = 0; j < i; j++)
generate j random numbers
for every random number
biStr[random number] = '*'
但是我需要确保没有重复的随机数。我不知道该怎么做。
【问题讨论】:
-
一种方法可能是 shuffle an array of 0 to 19 然后从数组中选择前 2 个或 4 个或 6 个等。