xian396875551
posts - 2, comments - 0, trackbacks - 0, articles - 1
导航
BlogJava
首页
新随笔
联系
聚合
管理
<
2011年10月
>
日
一
二
三
四
五
六
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
常用链接
我的随笔
我的评论
我的参与
留言簿
给我留言
查看公开留言
查看私人留言
随笔档案
2011年10月 (1)
2010年12月 (1)
文章分类
Poj-ACM(1)
文章档案
2011年10月 (1)
搜索
最新评论
阅读排行榜
1. java 题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。 (7583)
2. 生成不重复的随机数字(196)
评论排行榜
1. 生成不重复的随机数字(0)
2. java 题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。 (0)
生成不重复的随机数字
Posted on 2011-10-29 23:27
应该干点什么
阅读(196)
评论(0)
编辑
收藏
问题描述:生成一个长度为5的数组,该数组中包含[1,10]之间的数字,且每个数组中的元素
都不
重复。
实现思路:首先初始化一个长度为10的数组A,该数组中的数字依次为1~10,然后实现一个循环次数为5的循环,第一次生成一个[0,9]之间的随机数作
为数组
下
标,
将该数字赋值到结果数组B中的第一个
元素,并将A数组中随机下标的元素和数组A中的第
一个元
素交换;有效
数字减少1,;第二次生成一个[0,8]之间的随机数字作为下标。将该数组值赋值到数组B中的第二个元素,依次类推。
注:Math.random()生成一个[0,1)之间的随机小数
实现的代码如下:
public
class
norand
{
public
static
void
main(String[] args)
{
int
[] a
=
new
int
[
10
];
//
原始数据数组
int
[]b
=
new
int
[
5
];
//
结果数据数组
int
index;
//
随机下标
int
left
=
10
;
//
剩余元素个数
int
temp;
//
临时数据
//
初始化原始数组
for
(
int
i
=
0
;i
<
a.length;i
++
)
{
a[i]
=
i
+
1
;
}
//
随机元素
for
(
int
i
=
0
;i
<
b.length;i
++
)
{
index
=
(
int
) (Math.random()
*
left);
//
随机下标
b[i]
=
a[index];
//
存储结果数据
//
交换数据
temp
=
a[index];
a[index]
=
a[left
-
1
];
a[left
-
1
]
=
temp;
//
有效数据减少1
left
--
;
}
//
输出结果
for
(
int
i
=
0
;i
<
b.length;i
++
)
{
System.out.println(b[i]);
}
}
}
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理
Powered by:
BlogJava
Copyright © 应该干点什么