JAVA中怎样实现数组中随机数不重复
只能用Math.random随机数函数,我要的是纯算法,不能调用系统函数实现。我是这样写的,但错误,请指出我错在哪了,我是JAVA新手。代码如下:publicclassC...
只能用Math.random随机数函数,我要的是纯算法,不能调用系统函数实现。我是这样写的,但错误,请指出我错在哪了,我是JAVA新手。代码如下:
public class Class15_4 {
public static void main(String[] args) {
int s;
int a[] = new int[100];
int i=0;
while(i<100){
s=(int)Math.random()*100+1;
for(int j=0;j<=i;j++){
if(a[j]!=s){
a[j]=s;
i++;
}
}
}
}
} 展开
public class Class15_4 {
public static void main(String[] args) {
int s;
int a[] = new int[100];
int i=0;
while(i<100){
s=(int)Math.random()*100+1;
for(int j=0;j<=i;j++){
if(a[j]!=s){
a[j]=s;
i++;
}
}
}
}
} 展开
3个回答
展开全部
可以参考下面的代码:
public static void main(String[] args) {
int s = -1;
int a[] = new int[100];
int i = 0;
while (i < 100) {
s = (int) (Math.random() * 100 + 1);
for (int j = 0; j < 100; j++) {
if (a[j] == s) {
break;
} else if (j == i) {
a[i] = s;
i++;
break;
}
}
}
}
扩展资料:
java参考函数
max(x,y) 返回 x 和 y 之间较大的数
min(x,y) 返回 x 和 y 之间较小的数
pow(x,y) 返回 y^x 的值
random() 返回位于 0 到 1 之间的随机函数
round(x) 四舍五进后与整
sin(x) 返回数字的正弦值
sqrt(x) 返回数字的平方根
tan(x) 返回一个角度的正切值
toSource() 显示对象的流代码
valueOf() 返回数教对象的本初值
参考资料来源:百度百科-Java (计算机编程语言)
展开全部
你的逻辑关系错了。
public class Class15_4 {
public static void main(String[] args) {
int s;
int a[] = new int[100];
int i=0;
while(i<100){
s=(int)Math.random()*100+1;
for(int j=0;j<i;j++){
if(a[j]==s){
// 发现重复数据,跳出循环。
break;
}
}
if (j == i) {
// 没有找到相同的数据,赋值。
a[i] = s;
i++;
}
}
}
}
public class Class15_4 {
public static void main(String[] args) {
int s;
int a[] = new int[100];
int i=0;
while(i<100){
s=(int)Math.random()*100+1;
for(int j=0;j<i;j++){
if(a[j]==s){
// 发现重复数据,跳出循环。
break;
}
}
if (j == i) {
// 没有找到相同的数据,赋值。
a[i] = s;
i++;
}
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼上的 if (j == i)这个j取不到值了吧,你在for定义的,随手写了个,楼主试试
public static void main(String[] args) {
int s = -1;
int a[] = new int[100];
int i = 0;
while (i < 100) {
s = (int) (Math.random() * 100 + 1);
for (int j = 0; j < 100; j++) {
if (a[j] == s) {
break;
} else if (j == i) {
a[i] = s;
i++;
break;
}
}
}
}
public static void main(String[] args) {
int s = -1;
int a[] = new int[100];
int i = 0;
while (i < 100) {
s = (int) (Math.random() * 100 + 1);
for (int j = 0; j < 100; j++) {
if (a[j] == s) {
break;
} else if (j == i) {
a[i] = s;
i++;
break;
}
}
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询