返回顶部
首页 > 资讯 > 精选 >Java对数器验证算法怎么使用
  • 805
分享到

Java对数器验证算法怎么使用

2023-07-06 01:07:52 805人浏览 薄情痞子
摘要

本文小编为大家详细介绍“Java对数器验证算法怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java对数器验证算法怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。对数器验证算法的正确性对数器介绍有

本文小编为大家详细介绍“Java对数器验证算法怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java对数器验证算法怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

对数器验证算法的正确性

对数器介绍

有一个你想要测的方法a;

实现一个绝对正确但是复杂度不好的方法b;

实现一个随机样本产生器;

实现对比算法a和b的方法;

把方法a和方法b比对多次来验证方法a是否正确;

如果有一个样本使得比对出错,打印样本分析是哪个方法出错;

当样本数量很多时比对测试依然正确,可以确定方法a已经正确。

我们在写算法的时候很多情况下可能是应为没有案例测试而找不到bug,而通过对数器我们可以很方便的进行大量的样本测试,在这些样本中找到算法中不正确的案例,通过这些案例我们就能够发现我们的的程序出错在哪?如果大样本我们的程序都没有出错那么我们的程序也就可以理解为是正确的了。

public static int[] randomArray(int maxLength, int minValue, int maxValue) {    int[] array = new int[random(0, maxLength + 1)];    if (minValue > maxValue) {        throw new IllegalArgumentException("左边界不能大于右边界");    }    int range = maxValue - minValue;    for (int i = 0; i < array.length; i++) {        array[i] = (int) (Math.random() * range) + minValue;    }    return array;}public static int random(int minValue, int maxValue) {    if (minValue > maxValue) {        throw new IllegalArgumentException("左边界不能大于右边界");    }    int rang = maxValue - minValue;    return (int) (Math.random() * rang) + minValue;}public static boolean isSorted(int[] arr) {    if (arr.length < 2) {        return true;    }    int max = arr[0];    for (int i = 1; i < arr.length; i++) {        if (max > arr[i]) {            return false;        }        max = Math.max(max, arr[i]);    }    return true;}private static void swap(int[] arr, int i, int j) {    int tmp = arr[i];    arr[i] = arr[j];    arr[j] = tmp;}public static void selectionSort(int[] arr) {    if (arr == null || arr.length < 2) {        return;    }    int N = arr.length;    for (int i = 0; i < N; i++) {        int minValueIndex = i;        for (int j = i + 1; j < N; j++) {            minValueIndex = arr[j] < arr[minValueIndex] ? j : minValueIndex;        }        swap(arr, i, minValueIndex);    }}public static void main(String[] args) {    int maxLength = 50;    int maxValue = 1000;    int testTimes = 1000000;    for (int i = 0; i < testTimes; i++) {        int[] arr1 = randomArray(maxLength, 0, maxValue);        int[] arr2 = arr1.clone();        selectionSort(arr1);        if (!isSorted(arr1)) {            printArray(arr2);            System.out.println("选择排序错了");            break;        }    }}

对数器模板

介绍:

该对数器会对我们写的 target() 函数 进行 500000 ,每次目标数组是最大长度为 maxLength 最大值为maxValue 的整数数组, 目标值是生成一个最大值为maxValue 的整数,通过检验两个函数的计算结果来比对我们写的函数是否正确的方法。

如果我们的函数在高达 50万次 的测试中都正确,那么就可以说明我们的函数是正确的。

  • testTimes 函数的测试次数

  • randomArray(maxLength, maxValue) 生成一个 最大长度为 maxLength 最大值为maxValue 的整数数组

  • random(0, maxValue); 生成一个最大值为maxValue 的整数

  • test(arr, num) 通过暴力方法写的低效率函数,但是保证正确率是100%

  • target(arr, num) 我们自己写的高效率的函数,不保证100%正确,通过对数器进行检验模板的正确性

public static void main(String[] args) {    int testTimes = 500000;    int maxLength = 50;    int maxValue = 100;    boolean success = true;    for (int i = 0; i < testTimes; i++) {        int[] arr = randomArray(maxLength, maxValue);        Arrays.sort(arr);        int num = random(0, maxValue);        if (target(arr, num) != test(arr, num)) {            success = false;            printArray(arr);            System.out.println(num);            System.out.println("判断出错");            System.out.println("目标函数结果 = " + target(arr, num));            System.out.println("测试函数结果 = " + test(arr, num));            break;        }    }    System.out.println(success ? "LUCK" : "Fucking fucked");}

Java对数器验证算法怎么使用

Java对数器验证算法怎么使用

读到这里,这篇“Java对数器验证算法怎么使用”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网精选频道。

--结束END--

本文标题: Java对数器验证算法怎么使用

本文链接: https://lsjlt.com/news/357162.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Java对数器验证算法怎么使用
    本文小编为大家详细介绍“Java对数器验证算法怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java对数器验证算法怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。对数器验证算法的正确性对数器介绍有...
    99+
    2023-07-06
  • Java对数器验证算法详解
    目录对数器验证算法的正确性对数器模板对数器验证算法的正确性 对数器介绍 1.有一个你想要测的方法a; 2.实现一个绝对正确但是复杂度不好的方法b; 3.实现一个随机样本产生器; 4....
    99+
    2023-05-15
    Java对数器 Java对数器验证算法
  • 怎么使用C++验证数字
    这篇文章主要讲解了“怎么使用C++验证数字”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用C++验证数字”吧!首先,从题目中给的一些例子可以分析出来,...
    99+
    2024-04-02
  • 怎么使用PHP正则对表单数据进行验证
    这篇文章主要介绍了怎么使用PHP正则对表单数据进行验证,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。如何使用PHP正则对表单数据进行验证?首先,我们先布局我们的HTML的表单...
    99+
    2023-06-15
  • WPF使用ValidationRules对MVVM架构数据验证
    对于WPF中的验证, View验证实现起来很简单, 可以通道 Validation.ErrorEvent 冒泡传递到View的逻辑树上, 只是, 通常这样做的情况下, 我们需要为Vi...
    99+
    2024-04-02
  • java中validation后台参数验证怎么用
    这篇文章主要介绍了java中validation后台参数验证怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、前言在后台开发过程中,对参数的校验成为开发环境不可缺少的一...
    99+
    2023-05-31
    java validation
  • java回文数算法怎么使用
    要判断一个数字是否为回文数,可以使用以下算法: 将数字转换为字符串。 使用两个指针,一个指向字符串的开头,一个指向字符串的末尾。 ...
    99+
    2023-10-23
    java
  • E-mail验证怎么使用
    这篇文章主要介绍“E-mail验证怎么使用”,在日常操作中,相信很多人在E-mail验证怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”E-mail验证怎么使用”的疑惑...
    99+
    2024-04-02
  • 使用Python神器对付12306变态验证码
    临近春节,编程网小编带领大家用Python抢火车票! 首先我们需要splinter 安装: pip install splinter -i http://pypi.douban.com/simple tru...
    99+
    2022-06-04
    神器 验证码 Python
  • 使用Java怎么生成一个随机验证码
    这篇文章将为大家详细讲解有关使用Java怎么生成一个随机验证码,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。源代码:RandomGen.java(实现产生验证码功能的类)package ve...
    99+
    2023-05-31
    java ava
  • 怎么使用java搞定网站登录验证码
    这篇文章主要讲解了“怎么使用java搞定网站登录验证码”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用java搞定网站登录验证码”吧!验证码生成本效果是利用easy-captcha工具...
    99+
    2023-07-05
  • mysql怎么使用权限验证
    使用 mysql 权限验证需要执行三个步骤:创建 mysql 用户、授予权限和刷新权限。具体步骤包括:1. 使用 create user 语句创建用户;2. 使用 grant 语句授予用...
    99+
    2024-05-30
    mysql 权限验证
  • vue表单验证rules及validator验证器的使用方法实例
    目录前言表单验证rules自定义校验规则总结前言 为防止用户犯错,尽可能更早地发现并纠正错误。 Element中Form (表单)组件提供了表单验证的功能,只需要通过 rules 属...
    99+
    2024-04-02
  • Java使用J4L识别验证码的操作方法
    1、首先要下载j4l的相应文件和jar 下载地址:http://www.java4less.com/ocrtools/ocrtools.phpinfo=download 百度网盘下载...
    99+
    2024-04-02
  • vue验证码组件怎么使用
    这篇文章主要讲解了“vue验证码组件怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue验证码组件怎么使用”吧!代码如下:<template&...
    99+
    2024-04-02
  • 怎么使用php实现验证码
    这篇文章主要介绍怎么使用php实现验证码,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!php实现验证码的方法:首先创建绘制验证码类,代码如“class Captcha {...}”;然后绘制图片页面;接着设置表单页面...
    99+
    2023-06-15
  • jQuery验证插件validate怎么使用
    要使用jQuery的验证插件validate,首先需要引入jQuery和validate插件的相关文件。HTML代码示例:```html```JavaScript代码示例:```javascript$(document).ready(f...
    99+
    2023-08-11
    jQuery validate
  • 怎么用Java实现添加、验证PDF数字签名
    这篇文章主要讲解了“怎么用Java实现添加、验证PDF数字签名”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用Java实现添加、验证PDF数字签名”吧!目录Jar文件获取及导入方法:在设...
    99+
    2023-06-20
  • 怎么使用Java贪心算法
    这篇文章主要介绍“怎么使用Java贪心算法”,在日常操作中,相信很多人在怎么使用Java贪心算法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么使用Java贪心算法”的疑惑...
    99+
    2024-04-02
  • 使用java怎么实现一个动态验证码功能
    使用java怎么实现一个动态验证码功能?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Java可以用来干什么Java主要应用于:1. web开发;2. Andro...
    99+
    2023-06-06
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作