使用中平方法在 Java 中生成随机数2025 年 1 月 6 日 | 阅读 4 分钟 计算随机数被认为是任何计算机应用程序的基本要求之一,它被用于密码学、模拟和游戏等领域。随机数是不能由先前的事件确定的实数,而伪随机数是通过确定性方法生成的,并且几乎是随机的。中位数平方数法是开发伪随机数近似值的最古老的方法之一。 中位数平方数法由约翰·冯·诺依曼于1949年首次定义,在概念上非常简单但历史悠久。在这种模式下,一个人将一个数字平方,并使用平方结果的中间两个数字作为序列中的下一个数字。然而,上述方法并非没有缺点,一旦开始就很容易陷入负循环,或者变成零和博弈。尽管如此,它在学习随机数生成的初步概念时很有帮助。 如何使用中位数平方数法?从种子开始:第一个操作规定种子必须是正整数,并且必须包含偶数位数。 平方种子:将种子乘以自身。 提取中间数字:下一个数字是通过从平方结果中选取中间数字获得的。 重复:将提取的数字作为新的种子,或简单地重复整个过程。 例如,如果我们从种子1234开始 平方它 1234*1234=1522756 提取中间4位数字 2275 这意味着使用2275作为新种子并再次循环。 文件名:MiddleSquareMethod.java 输出 5227 3215 3362 3030 1809 2724 4201 6484 422 1780 241383 265752 624125 532015 39960 596801 171433 389273 533468 588107 解释 它包含一个名为MiddleSquareMethod的类,其构造函数带有一个'seed'参数来设置生成序列的初始值,以及一个名为'next()'的方法来生成序列中的下一个值。它必须是一个正整数,并且种子的位数必须是偶数。 下一个过程有一个参数numDigits,它定义了从种子的平方中应取多少个中间数字。该值被平方,并且结果值被用数字零进行词法左填充,使其至少有2*numDigits位长。然后提取中间数字并用作新种子。然后提取它们用作新种子。 主方法通过创建并显示十个随机数来说明该类的用法,其中中间数字分别为4和6,种子分别为1234和123456。如果输入了不正确的种子或数字位数,将出现IllegalArgumentException并被捕获,显示错误消息。 |
霍夫曼编码算法由 David A. Huffman 于 1950 年提出。它是一种无损数据压缩机制。它也被称为数据压缩编码。它广泛用于图像(JPEG 或 JPG)压缩。在本节中,我们将讨论霍夫曼编码...
阅读 12 分钟
如何在 Java 中返回数组?在 Java 中,有几种方法可以从 方法返回数组,每种方法都有其优点和用例。这些 方法可大致分为静态数组、动态创建的数组、子数组和使用 Java Streams 生成的数组。首先,...
阅读 16 分钟
在任何编程语言中,程序都需要标识符来存储可在整个程序中使用的不同值。这些标识符就是变量。Java 中的变量是分配给存储在系统内存中的值的名称。该值可以在...
阅读 4 分钟
在 Java 编程的世界里,处理 null 值是一项常见的挑战。有效处理 null 对于避免 NullPointerException 并确保代码健壮且无错误至关重要。isNull() 方法,在各种框架和库中可用,是一个强大的工具,允许开发人员确定...
阅读 4 分钟
在 Web 世界中,会话是指任何两个系统相互交互的时间长度。这两个系统可以彼此建立点对点或客户端-服务器关系。然而,问题在于,在 HTTP 协议中,状态的...
阅读 6 分钟
Socket 是 Java 网络支持的核心概念。Socket 范式是在 20 世纪 80 年代初的 4.2BSD Berkeley UNIX 版本中引入的。因此,它被称为 Berkeley socket。Socket 是现代网络的基础,因为 Socket……
阅读 17 分钟
数组是固定大小的同类数据结构。数组的限制是它们的大小是固定的。这意味着我们在声明数组时必须指定元素的数量。这里出现一个问题,如果我们想插入...
阅读 8 分钟
在 Java 编程的世界中,有许多场景可能需要计算给定字符串中不同字符的数量。无论我们是开发文本分析工具、文字游戏,还是任何处理文本数据的应用程序,了解如何……
阅读 4 分钟
Java.lang.Package 具有 getPackages() 函数。调用者的类加载器定义了 Packages,可以通过 package 类获取。该方法返回一个 Package 对象数组,用于表示包。语法:public boolean getPackages(String desiredVersion) 参数:此方法不接受任何参数……
阅读 2 分钟
队列是一种可以通过数组或链表实现的数据结构。在这里,我们简要介绍了使用数组实现队列的过程。队列 队列是一种基于先进先出...
阅读 4 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India