我的程序错在哪里??(生成100以内的10个随机数,不可重复,)

weicairong 2004-08-29 02:05:02

class MyRandom
{
public static void main(String args[])
{
int c=0;
int b[]=new int[15];
for(int i=0;i<10;i++) b[i]=0;
while(c<15)
{
int num=(int)Math.random()*100+1;
for(int j=0;j<=c;j++)
if(b[j]!=num) {b[j]=num;c=c+1;}
}
}

}
...全文
459 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
LANDEHUTU 2004-10-06
  • 打赏
  • 举报
回复
这是个典型的发牌问题。

生成n到m的数列,首先随机生成n和m之间的x,然后将最后一个数和x互换(第一次是m,第二次是m减一。。。),依次不停的生成x,不断的交换最后一个数和x。这样一次循环就可以完成。
Ardor007 2004-08-30
  • 打赏
  • 举报
回复
/*
* MyRandom.java v 1.0 08/30/2004
* Copyright (c) Ardor
* 程序功能:生成15个不同的1到100之间的随机整数并依次打印出来
*/

public class MyRandom
{
public static void main( String args[] )
{
int randomNum; // 随机整数
int b[] = new int[ 15 ]; // 用来存储生成的15个随机整数

// 初始化数组
for ( int i = 0; i < 15; i++ )
{
b[ i ] = 0;
}

// 生成15个不同的1到100之间的随机整数,并依次打印
for ( int i = 0; i < 15; i++ )
{
// 生成一个符合要求的数,并将其存入数组
for ( int j = 0; j <= i; j++ )
{
// 产生一个1到100之间的随机整数
randomNum = 1 + (int)( Math.random()*100 );

// 如果生成了相同的数,则跳出,重新生成
if ( b[ j ] == randomNum )
{
break;
}

// 整数符合要求,存入数组
if( j == i )
{
b[ j ] = randomNum;
}
}

// 打印出此次生成的数
System.out.println( "第" + (i + 1) + "个整数是: " + b[ i ] );
}
}
}
Ardor007 2004-08-30
  • 打赏
  • 举报
回复
/*
* MyRandom.java v 1.0 08/30/2004
* 程序功能:生成15个不同的1到100之间的随机整数并依次打印出来
*/

public class MyRandom
{
public static void main( String args[] )
{
int randomNum; // 随机整数
int b[] = new int[ 15 ]; // 用来存储生成的15个随机整数

// 初始化数组
for ( int i = 0; i < 15; i++ )
{
b[ i ] = 0;
}

// 生成15个不同的1到100之间的随机整数,并依次打印
for ( int i = 0; i < 15; i++ )
{
// 生成一个符合要求的数,并将其存入数组
for ( int j = 0; j <= i; j++ )
{
// 产生一个1到100之间的随机整数
randomNum = 1 + (int)( Math.random()*100 );

// 如果生成了相同的数,则跳出,重新生成
if ( b[ j ] == randomNum )
{
break;
}

// 整数符合要求,存入数组
if( j == i )
{
b[ j ] = randomNum;
}
}

// 打印出此次生成的数
System.out.println( "第" + (i + 1) + "个整数是: " + b[ i ] );
}
}
}
weicairong 2004-08-30
  • 打赏
  • 举报
回复
感谢大家的帮助,再加30分我要接贴了.
wizardnjau 2004-08-30
  • 打赏
  • 举报
回复
kb 2004-08-30
  • 打赏
  • 举报
回复
:Ardor007(阿多)

楼上兄弟应该是对的
Ardor007 2004-08-30
  • 打赏
  • 举报
回复
上面的代码有点小错误,更正如下:

/*
* MyRandom.java v 1.0 08/30/2004
* Copyright (c) Ardor
* 程序功能:生成15个不同的1到100之间的随机整数并依次打印出来
*/

public class MyRandom
{
public static void main( String args[] )
{
int randomNum; // 随机整数
int b[] = new int[ 15 ]; // 用来存储生成的15个随机整数

// 初始化数组
for ( int i = 0; i < 15; i++ )
{
b[ i ] = 0;
}

// 生成15个不同的1到100之间的随机整数,并依次打印
for ( int i = 0; i < 15; i++ )
{
// 生成一个符合要求的数,并将其存入数组
for ( int j = 0; j <= i; j++ )
{
// 产生一个1到100之间的随机整数
randomNum = 1 + (int)( Math.random()*100 );

// 如果生成了相同的数,则跳出,重新生成
if ( b[ j ] == randomNum )
{
break;
}

if( j == i )
{
b[ j ] = randomNum; // 整数符合要求,存入数组

// 打印出此次生成的数
System.out.println( "第" + ( j + 1 ) + "个整数是:"
+ b[ j ] );
}
}
}
}
}
ntzls 2004-08-29
  • 打赏
  • 举报
回复
import java.util.*;
class Test{
public static void main(String args[]){
HashSet set = new HashSet();
Random rand = new Random();
while(set.size()<15)set.add(rand.nextInt(100));
System.out.println(set);
}
}
guestman 2004-08-29
  • 打赏
  • 举报
回复
同意 vongood((my c++)) 的做法!
Squall1009 2004-08-29
  • 打赏
  • 举报
回复
for(int j=0;j<=c;j++)
if(b[j]!=num) {b[j]=num;c=c+1;}

这两句的问题太大了,你的b[j]不论j等于几的时候,只要不和num相等就一直在做等于num。
估计你的程序到最后b数组里面的数全一样.

楼上的就是在j==c,的时候在帮b[j]赋值
vongood 2004-08-29
  • 打赏
  • 举报
回复
class MyRandom
{
public static void main(String args[])
{
int c=0;
int b[]=new int[15];
for(int i=0;i<15;i++) b[i]=0;
while(c<15)
{
int num=(int) ( Math.random()*100+1 ); //加 ( )
for(int j=0;j<=c;j++)
if(b[j]==num)
break;
if( j == c )
{ b[j]=num;c=c+1;}
}
}

}
weicairong 2004-08-29
  • 打赏
  • 举报
回复
写错了,是生成15个随机数

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧