1.先用个数组存放1-35个数,如
a[0]=1
a[1]=2
....
a[34]=352.在1-35随机产生一个下标,取得这个数,如30,则取313.将这个数从a中去除,留下34个数4.在1-34随机产生一个下标,取得这个数,如还是30,则取32以次类推,获得35个随机数,然后分成5组就可以了.
a[0]=1
a[1]=2
....
a[34]=352.在1-35随机产生一个下标,取得这个数,如30,则取313.将这个数从a中去除,留下34个数4.在1-34随机产生一个下标,取得这个数,如还是30,则取32以次类推,获得35个随机数,然后分成5组就可以了.
<!--
var flag=false;
var quotes=new Array(7)
var i=0;
while(i<7)
{
quotes[i]=Math.floor(Math.random()*36)+1;
for(j=0;j<i;j++)
{
if(quotes[i]==quotes[j])
{
quotes[i]=Math.floor(Math.random()*36)+1;
j=0;
}
}
document.write(i+1+". ");
document.write(quotes[i]+"<br>");
i++;
}
//-->
</script>
{
public static void main(String[] args)
{
int a[]=new int[35];
int b[]=new int[35];
int ptr=0;
int i=0;
int j=0;
float x=0f;
int rnd[][]=new int[5][7];
Random random = new Random();
for(i=0;i<35;i++){
a[i]=i;
b[i]=0;
}
for(i=0;i<35;i++){
x=random.nextFloat();
ptr=(int)(x*(35-i)+1);
b[i]=a[ptr];
for(j=ptr;j<34;j++)
a[j]=a[j+1];
}
for(j=0;j<5;j++)
{for(i=0;i<7;i++)
{
rnd[j][i]=b[j*7+i];
System.out.print(rnd[j][i]+" ");
}
System.out.println("*******");
}
}
}
具体自己做,public static void main(String[] args) {
Random random = new Random(); ArrayList list1 = new ArrayList();
for (int i = 1; i <= 35; i++) {
list1.add(String.valueOf(i));
//System.out.println(i);
}
System.out.println("#############");
ArrayList list2 = new ArrayList();
int k = 1;
while (list1.size() > 0) {
String number = String.valueOf(random.nextInt(36));
if (list1.remove(number) == true) {
list2.add(String.valueOf(number));
if (number.length() == 1)
number = " " + number;
System.out.print(number + " ");
if (k == 7) {
k = 0;
System.out.println("");
}
k++;
}
}}
import java.util.Random;class pickup7of35
{
public static void main(String[] args)
{
int[] b=new int[35];
int k=0;
for(k=0;k<35;k++){
b[k]=k+1;
}
Random random = new Random();
for(int j=1;j<6;j++)
{for(int i=0;i<7;i++)
{
float x=random.nextFloat();
int[] a=new int[7];
int p=(int)(k*x);
a[i]=b[p];
int temp=b[p];
for(;p<k;p++){
b[p]=b[p+1];
}
b[k]=temp;
k--;
System.out.println(a[i]);
}
System.out.println("*******");
}
}
}
public Random(long seed)参数seed为产生随机数的种子,种子不一样,产生的随机数也不一样,可以把上次产生的随机数作为下一个随机数的种子,这样就可避免重复.
import java.util.*;public class helloworld {
helloworld() {
} // itemCount为取值范围;arrayLength为所取元素个数
public static int[] GetRandomArray(int beginNum, int endNum, int arrayLength) {
int itemCount = endNum - beginNum + 1;
int[] tmplist = new int[arrayLength];
Random ran = new Random(System.currentTimeMillis());
for (int i = 0; i < arrayLength; i++) {
boolean flag;
do {
flag = false;
int randomNum = ran.nextInt();
if (randomNum < 0)
randomNum += 0x7fffffff;
randomNum %= itemCount;
randomNum += beginNum; for (int j = 0; j < i; j++) {
if (randomNum == tmplist[j]) {
flag = true;
break;
}
}
if (flag == false)
tmplist[i] = randomNum;
} while (flag);
}
return tmplist;
} public static void main(String[] args) {
int[] array = helloworld.GetRandomArray(1, 35, 10);
for (int i = 0; i < 10; i++)
System.out.println(array[i]);
}
}
这个问题 JAVA核心技术卷1 里有原代码啊
只需要几行代码 就搞定了
{
answer[i]=(int)(Math.random()*36); //保证不能与前边的数字重复
for(int j=i-1;j>=0;j--)
{
if(answer[i]==answer[j])
{
i--;
continue w;
}
}