洗牌算法详解_数据库洗牌算法

洗牌算法详解_数据库洗牌算法洗牌算法含义将数组中的数随机打乱,每次打乱后出现的概率应该是均等的。思路对于下标x而言,我们从[x,n−1]中随机出一个位置与x进行值交换,当所有位置都进行这样的处理后,我们便得到了一个公平的洗牌方案。代码实现intn=nums.length;Randomrandom=newRandom();for(inti=0;i<n;i++){//要交换数的下标intj=i+random.nextInt(n-i)

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

洗牌算法

含义

将数组中的数随机打乱,每次打乱后出现的概率应该是均等的。

思路

对于下标 x 而言,我们从 [x,n−1] 中随机出一个位置与 x 进行值交换,当所有位置都进行这样的处理后,我们便得到了一个公平的洗牌方案。

代码实现

int n = nums.length;
Random random = new Random();
for (int i = 0; i < n; i++) { 
   
    //要交换数的下标
    int j = i+random.nextInt(n-i)
    int tem = nums[i];
    nums[i] = nums[j];
    nums[j] =tem;
}
return nums;

例题

给你一个整数数组 nums ,设计算法来打乱一个没有重复元素的数组。

实现 Solution class:

    Solution(int[] nums) 使用整数数组 nums 初始化对象
    int[] reset() 重设数组到它的初始状态并返回
    int[] shuffle() 返回数组随机打乱后的结果
  • 代码实现
class Solution { 
   
    int[] nums;
    public Solution(int[] nums) { 
   
      this.nums = nums;
    }
    public int[] reset() { 
   
      return nums;
    }

    public int[] shuffle() { 
   
        int[] clone = nums.clone();
        int n = nums.length;
        Random random = new Random();
        for (int i = 0; i < n; i++) { 
   
            int j = i+random.nextInt(n-i);
            int tem = clone[i];
            clone[i] = clone[j];
            clone[j] =tem;
        }
        return clone;
    }
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/190990.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • elasticsearch painless最强教程

    何为painlesspainless的特性简单的例子具体例子初始化数据用painless获取doc的值通过painless更新对象值单条记录更新批量更新Dates

    2022年4月5日
    135
  • 关于Pytorch中双向LSTM的输出表示问题

    关于Pytorch中双向LSTM的输出表示问题在使用pytorch的双向LSTM的过程中,我的大脑中蒙生出了一个疑问。双向的lstm的outputs的最后一个状态与hidden,两者之间肯定有所联系,但具体是什么样子的呢?会不会hidden状态存储的就是outputs的最后一个状态,这样的话,岂不是会导致hidden并不能表示整个序列的双向信息吗?带着这个疑问,我开始了实验。具体的实验代码,这里就不放了。直接放实验结果吧。output_size:torch.Size([14,32,100])hidden_size:torch.S

    2022年6月22日
    65
  • 《WCF技术内幕》翻译28:第2部分_第5章_消息:使用消息头(中)

    《WCF技术内幕》翻译28:第2部分_第5章_消息:使用消息头(中)

    2022年3月11日
    33
  • java保留两位小数输出,看这篇文章准没错!

    java保留两位小数输出,看这篇文章准没错!4年经验应该具备哪些技能首先,简单的聊一下我认为的4年经验左右、优秀的Java程序员应该具备的技能有哪些,按“专业技能”和“项目”两块,包括但不限于以下内容。专业技能方面基础:JDK常用类的原理、源码、使用场景。设计模式:常用几种的原理、使用场景,单例、动态代理、模板、责任链等。数据结构:数组、链表、栈、队列、树。网络:TCP、HTTP、HTTPS、负载均衡算法。框架:SpringIoC原理、SpringAOP原理和使用、Spring常用的扩展点、MyBatis的核心

    2022年7月8日
    32
  • httprunner(8)用例调用-RunTestCase[通俗易懂]

    httprunner(8)用例调用-RunTestCase[通俗易懂]前言一般我们写接口自动化的时候,遇到复杂的逻辑,都会调用API方法来满足前置条件,Pytest的特性是无法用例之间相互调动的,我们一般只调用自己封装的API方法。而httprunner支持用例之间

    2022年7月28日
    28

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号