`
逆风的香1314
  • 浏览: 1389051 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

生成不重复随机数的一种算法

阅读更多
一个不错的算法,很简单,但有效。不过如果范围比较大,则占用内存大,就不推荐使用了。个人感觉1000个以内的就可以考虑。这东西也许你早就知道了,但我依然惊叹算法的力量。

看代码
  1. import java.util.*;
  2. /**
  3.  * 生成不重复随机数的一种算法。
  4.  * 
  5.  * @author 赵学庆,Java世纪网(java2000.net)
  6.  * 
  7.  */
  8. public class T {
  9.   public static void main(String[] args) {
  10.     // 种子你可以随意生成,但不能重复
  11.     int[] seed = { 123456789 };
  12.     int[] ranArr = new int[9];
  13.     Random ran = new Random();
  14.     // 数量你可以自己定义。
  15.     for (int i = 0; i < seed.length; i++) {
  16.       // 得到一个位置
  17.       int j = ran.nextInt(seed.length - i);
  18.       // 得到那个位置的数值
  19.       ranArr[i] = seed[j];
  20.       // 将最后一个未用的数字放到这里
  21.       seed[j] = seed[seed.length - 1 - i];
  22.     }
  23.     System.out.println("ranArr:" + Arrays.toString(ranArr));
  24.   }
  25. }
一个运行结果
ranArr:[6, 3, 5, 9, 7, 2, 8, 4, 1]


分享到:
评论

相关推荐

    Python编程实现生成特定范围内不重复多个随机数的2种方法

    这一问题的核心其实就是产生不重复随机数的问题。首先想到的递归的方法,然后才发现Python中居然已经提供了此方法的函数,可以直接使用。具体代码如下: #生成某区间内不重复的N个随机数的方法 import random; #1、...

    delphi生成随机数

    delphi 如何产生不重复随机数 pascal里的随机数 随机数是指理论上没有规律可循、在指定范围内每个数的出现几率相等、无法根据之前的数来预测下一个数的数列。一般随机数生成器的基本原理是:首先初始化一个随机...

    C# 控制台应用程序——随机数

    所生成的防伪码不能重复(按照以上例子,生成了10000个防伪码,这10000个防伪码就肯定不能重复)。 3、提交内容 1)请把整个项目源代码压缩为RAR文件进行提交 2)运行: a) exe 10 10000 b) exe 20 1000000 ...

    Ruby生成随机数的方法总结

    数字实际上不是随机的 没有一台计算机能纯粹通过计算产生真正的随机数。它们能做的最好的事情就是生成伪随机数,伪随机...请记住,没有一种方法是神奇的——这些看似随机的数字是用相对简单的算法和相对简单的算术生成

    K_means随机赋初值.rar

    k均值聚类算法(k-means clustering algorithm)是一种迭代求解的聚类分析算法,其步骤是随机选取K个对象作为初始的聚类中心,然后计算每个对象与各个种子聚类中心之间的距离,把每个对象分配给距离它最近的聚类中心...

    计算机算法设计与分析试题.doc

    下列哪一种算法不是随机化算法( C ) A. 蒙特卡罗算法B. 拉斯维加斯算法C.动态规划算法D.舍伍德算法 24. ( D )是贪心算法与动态规划算法的共同点。 A、重叠子问题 B、构造最优解 C、贪心选择性质 D、最优子结构...

    页面置换算法

    请求页式管理是一种常用的虚拟存储管理技术。 本实验的目的是通过请求页式存储管理中页面置换算法模拟设计,了解虚拟存储技术的技术特点,掌握请求页式存储管理的页面置换算法。 2、实验内容 (1)通过随机数产生...

    操作系统实验

    请求页式管理是一种常用的虚拟存储管理技术。本设计的目的是通过请求页式存储管理中页面置换算法模拟设计,了解虚拟存储技术的特点,掌握请求页式存储管理的页面置换算法。要求: (1)通过随机数产生一个指令序列,共...

    Java语言编写的彩票游戏系统

    使用Java语言编写的彩票系统,内有四种玩法,3D,21选5,6+1,双色球,内包含很多经典算法。如何生成5个不重复的随机数等等。

    规则网络与随机网络.rar_ER随机图_pinedju_均匀随机网络_网络规则_规则网络

    常见的一种具有周期边界条件的最近邻耦合网络包含围成一个环的N个节点,其中每个节点都与它左右各K/2个邻居节点相连,这里K是一个偶数。构造算法:初始化时,N个初始节点均匀分布在圆周上,而后每个节点与自己的第k/...

    数据结构与算法.xmind

    求最小生成树的Prim算法和Kruskal算法 爬山问题 回溯算法 n皇后问题 动态规划Dynamic Planning 应用 求最长公共子序列LCS 矩阵连乘问题 爬楼梯问题 找零问题 0-1背包问题 分治算法...

    基于C++实现的改进版遗传算法解决TSP问题源码+项目说明.zip

    - 使用一个不重复的,首尾相同的字符串来表示一个解,该字符串即TSP的顺序 - 使用交叉,变异两种方式产生新的解,并根据数据来计算解的适应度 - 种群定义为当前所有解的一个集合,当种群中的每个个体完成一次“进化...

    存储管理 实验指导书

    存储管理的主要功能之一是合理地分配空间 请求页式管理是一种常用的虚拟存储管理技术 本设计的目的是通过请求页式存储管理中页面置换算法模拟设计 了解虚拟存储技术的特点 掌握请求页式存储管理的页面置换算法 要求...

    东华大学 操作系统实验 存储管理 含源代码和报告

    1 通过随机数产生一个指令序列 共320条指令 指令的地址按下述原则生成: 50%的指令是顺序执行的; 25%的指令是均匀分布在前地址部分 25%的指令是均匀分布在后地址部分 具体的实施办法是: 在[0 319]的指令地址...

    操作系统实验-存储管理.doc

    2、请求页式管理是一种常用的虚拟存储管理技术。。 3、命中率=1- (页面失效次数/页地址流长度)。本实验页面失效次数为每次访问相应指令时,该指令所 对应的页不在内存的次数。 【实验步骤】 一、问题描述与分析 1、...

    JavaScript经典实例

     4.3创建一个随机数生成器  4.4随机产生颜色  4.5把表中的字符串转换为数字  4.6把表中一列的所有数字加和  4.7在角度和弧度之间转换  4.8找到页面元素可容纳的一个圆的半径和圆心  4.9计算圆弧的长度  第5...

    实验四--操作系统存储管理实验报告.doc

    请求页式管理是一种常用的虚拟存储管 理技术。 本实验的目的是通过请求页式管理中页面置换算法模拟设计,了解虚拟存储技术的特 点,掌握请求页式存储管理的页面置换算法。 二、实验内容 1. 通过计算不同算法的命中率...

    jdk1.8.0_181(64位).7z

    Lambda Expressions是一种新的语言功能,已在此版本中引入。它们使您可以将功能视为方法参数,或将代码视为数据。Lambda表达式允许您更紧凑地表达单方法接口(称为功能接口)的实例。 方法引用为已经具有名称的方法...

    c语言编写单片机技巧

    答:汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码的一种语言。其主要优点是占用资源少、程序执行效率高。但是不同的CPU,其汇编语言可能有所差异,所以不易移植。 C语言是一种结构化的...

    软件测试规范

    随机数法 .............................................................................................................................................. 9 六.白盒测试方法 .................................

Global site tag (gtag.js) - Google Analytics