今天去烟台杰瑞网络面试,有一道题是把10000个不重复的随机数(0-9999)插入buff[10000]中,其实就是要生成10000个不重复的随机数,这个正好我以前在用android写连连看随机配对的时候写过,于是就写了出来,结果解释了一会面试官才看懂....看来这个方法似乎不是主流的方法,于是回来便搜索了一下生成不重复的随机数的文章,发现一个最简单的(喂,这不算是算法了吧!)... 现在把两个算法一起发出来,大家参考一下:
网上的算法:
List<Integer> list = new ArrayList<Integer>();
for(int i = 1; i <= 6; i++){
list.add(i);
}
Collections.shuffle(list);
for(Integer i : list){
System.out.println(i);
}
}
自己的算法:
/*
* 重新生成map,off数组表示已被占用的点
* 并返回随机的目标点
*/
private int setmap(List<Integer> off){
System.out.println("setmap");
//key用于随机,value表示key代表的点
Map<Integer,Integer> map=new HashMap<Integer,Integer>();
map.clear();
int count=1;
for(int i=0;count<=60-off.size()&&i<60;i++){
if(!off.contains(i)){
map.put(count++, i);
}
}
int randomMap=(int) Math.floor(Math.random()*(60-off.size())+1);
return map.get(randomMap);
}
private void initialize(){
List<Integer> off=new ArrayList<Integer>();
int randomPic=1;
do {
if(off.size()%2==0)
randomPic = (int) Math.floor(Math.random() * 10 + 1);
int randomMap = setmap(off);
off.add(randomMap);
int x = randomMap /6+1;
int y = randomMap %6+1;
// 取得资源id
ApplicationInfo appInfo = this.getContext().getApplicationInfo();
int resID = getResources().getIdentifier("p" + randomPic,
"drawable", appInfo.packageName);
System.out.println(x+"-"+y+":"+resID);
bitmap[x][y] = ((BitmapDrawable) getResources().getDrawable(resID))
.getBitmap();
pic[x][y]=new Pic();
// Game.drawImage(canvas, bitmap[i/6][i%6], posx+(i%6)*25, posy+(i/6)*25);
Rect rect=new Rect(posx+(randomMap%6+1)*25,posy+(randomMap/6+1)*25,posx+(randomMap%6+1)*25+25,posy+(randomMap/6+1)*25+25);
pic[x][y].setPosx(x);
pic[x][y].setPosy(y);
pic[x][y].setRect(rect);
pic[x][y].setPicName("p" + randomPic);
pic[x][y].setFlag(randomPic);
pic[x][y].setShow(true);
} while (off.size() < 60);
//边缘x0=45,y0=30
for(int i=0;i<12*8;i++){
int x = i /8;
int y = i %8;
if(x==0||x==11||y==0||y==7){
pic[x][y]=new Pic();
Rect rect=new Rect(posx+(y)*25,posy+(x)*25,posx+(y)*25+25,posy+(x)*25+25);
pic[x][y].setPosx(x);
pic[x][y].setPosy(y);
pic[x][y].setRect(rect);
// System.out.println("pic["+x+"]["+y+"]:"+pic[x][y].getRect());
pic[x][y].setShow(false);
}
}
}
另外,为什么给代码选了颜色就显示出来就变成代码( <SPAN style="COLOR: #888888">)了啊!!!!
分享到:
相关推荐
VBA生成不重复的随机数源码.txt
VB生成不重复的随机数 我的建议是:第一步、先做一个数组,存上这35个数(可以不是连续的数,也可以是人名、字符串什么的);第二步、随机生成一个1-35之间的数,输出;第三步:把这个数和数组的第一个单元交换;第...
多种生成不重复随机数的java 源代码,在线考试系统组卷系统中若需要随机抽题技术,这些代码可能会帮上忙!
生成指定随机数不重复的例子(解压,放到myeclipse即可用)
VB.NET生成不重复的随机数源程序。 VB.NET生成不重复的随机数源程序。
代码如下:/// /// 生成不重复随机数列表实例 /// /// ”count”>不重复数数量 /// 不重复数列表 private static List<int> GetRandomList(int count) { List<int> list = new List(); int num = 0; ...
ASP不重复随机数:方法一: 已测使用的时候需要注意里面的分割字符串的字符。 代码如下: <% ‘生成的是一个不重复的数组 Function GetRnd(lowerNum,upperNum) Dim unit,RndNum,Fun_X unit = upperNum – ...
易语言取不重复随机数源码,取不重复随机数
C#产生不重复的随机数.txt
在本文中,我们将详细介绍如何使用 VBScript 生成不重复的随机数代码。 随机数生成的 importance 在计算机科学和数学中,随机数生成是一种常见的技术,它可以应用于各种领域,如数据加密、模拟仿真、游戏开发等。...
.NET生成不重复的随机数,源文件..常用的设置
java生成十个不重复的随机数,要求不重复
下面写几种生成不重复随机数的方法,直接上代码吧 复制代码 代码如下: <?php define(‘RANDOM_MAX’, 100); define(‘COUNT’, 10); echo ‘max random num: ‘.RANDOM_MAX, ‘ ;result count:’.COUNT, ‘ ’...
巧用Java实现得到任意位永不重复的随机数,很经典的代码!
通过循环创建随机种子来循环生成随机数,避免了重复调用Random的Next方法产生重复随机数的问题,程序里可设置文件的保存路径和产生的随机数长度
下面小编就为大家分享一篇python生成不重复随机数和对list乱序的解决方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
本文汇总了5种生成不重复随机数的方法,其中方法一、二、三是本人常用的方法,方法四五来至度娘。其余方法还是有的,也欢迎大家将遗漏的方法告之,大家共同进步