java生成7个不同的随机数

publicstaticvoidmain(String[]args){int[]num=newint[36];//声明一个数组接1-36的数字int[]no=newint... public static void main(String[] args) {
int[] num = new int[36]; // 声明一个数组接1-36的数字
int[] no = new int[7]; // 接7个随机数
int[] noo = new int[7]; // 接输入数的数
// 往num数组里装1-36个数字
for(int i=1;i<37;i++){
num[i-1]=i;
}
// 生成7个不同的随机数
for(int i=0;i<7;i++){
int random = (int)(Math.random()*(37-i));
no[i]=num[random];
num[random]=num[num.length-1-i];
System.out.print(no[i]+"\t");
}
那不对, 请指教 还有没有别的算法, 用循环做和数组做
展开
 我来答
搞笑版的
推荐于2017-09-25 · 超过29用户采纳过TA的回答
知道答主
回答量:75
采纳率:0%
帮助的人:0
展开全部
int random = (int)(Math.random()*(37-i));
这一句好像有问题
i == 0的时候, 假如Math.random()是0.995 , 很接近1的时候,(int)(Math.random()*37)就是37,
下一句
no[i]=num[random]; //这里会造成数组越界

可以这样改 (前面没有问题)

// 生成7个不同的随机数
for(int i=0;i<7;i++){
int random = (int)(Math.random()*(36-i)); //改成36
no[i]=num[random];
num[random]=num[num.length-1-i];
System.out.print(no[i]+"\t");
}

你的算法目的是不是 随机生成7个不同的数,这些数 大于等于1 , 小于等于36?
千锋教育
2015-12-15 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
展开全部
import java.util.Arrays;
import java.util.Random;

public class RandomGenerator {
 private Random rand;
 public RandomGenerator() {
  rand = new Random(System.currentTimeMillis());
 }
 public int[]next(){
  int []ret=new int[4];
  for(int i=0;i<ret.length;i++){
   ret[i]=rand.nextInt(10);
  }
  return ret;
 }
 public static void main(String[] args) {
  RandomGenerator generator=new RandomGenerator();
  System.out.println(Arrays.toString(generator.next()));
 }
}

用Random类的nextInt(int n)就可以生成0-n之间(不包括n)的随机数,然后赋给数组就行了

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
近水思寒
2009-12-13 · 超过16用户采纳过TA的回答
知道答主
回答量:63
采纳率:0%
帮助的人:0
展开全部
int random = (int)(Math.random()*(37-i));有问题

有种很简单的写法如下:
int[] numberArray=new int[7];

for(int i=0;i<7;i++){
//产生1到36中的七个随机数
numberArray[i]=(int)(Math.random()*36+1);
System.out.print(numberArray[i]+"\t");
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
luhfly
2009-12-13 · TA获得超过341个赞
知道小有建树答主
回答量:695
采纳率:0%
帮助的人:422万
展开全部
int random = (Math.random()*370).intValue();//这样才能得到整数.它的范围是( 0,36),不包括36 ;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友2b3a08d
2009-12-13 · TA获得超过561个赞
知道答主
回答量:139
采纳率:0%
帮助的人:0
展开全部
你这个好像可能会出现相同的数。建议直接生成随机数,加一个判断吧,出现相同的就 继续生成,知道生成7个不同的数。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式