公平洗牌算法_随机洗牌算法

公平洗牌算法_随机洗牌算法要求:给定一个长度为n的有序数组,要求将其完全打乱,每个元素在任何位置出现的概率均为1/n。随机洗牌算法有好几个,这里讲其中的一个,Fisher-Yatesshuffle算法(时间复杂度为O(n)),其思路如下:(1)从数组中随机选取一个数p。(2)将p与数组中最后(也可以是最前)的元素交换。(如果随机选中的是最后的元素,则相当于没有发生交换)(3)去掉最后的元素(这里并没有删除操作,而是缩小索

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

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

要求:给定一个长度为n的有序数组,要求将其完全打乱,每个元素在任何位置出现的概率均为1/n。

随机洗牌算法有好几个,这里讲其中的一个,Fisher-Yates shuffle算法(时间复杂度为O(n)),其思路如下:

(1)从数组中随机选取一个数p。

(2)将p与数组中最后(也可以是最前)的元素交换。(如果随机选中的是最后的元素,则相当于没有发生交换)

(3)去掉最后的元素(这里并没有删除操作,而是缩小索引值范围),即选中的p,缩小选取的数组范围。

(4)重复步骤(1)~(3),直到数组的长度为1时结束。

代码如下:

function shuffle(arr){
	var tmp;
	var len=arr.length;
	if(len<=1){return arr;}
	for(var i=len-1;i>0;i--){
		var ind=Math.round(Math.random()*i); //随即产生0到i之间的一个数并将其四舍五入成一个整数,作为随机选中的元素的下标
		tmp=arr[i];
		arr[i]=arr[ind];
		arr[ind]=tmp; //随机数与最后一个元素进行交换
	}
	return arr;
}

测试:

公平洗牌算法_随机洗牌算法

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/191012.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • spring中@transactional注解的作用(spring 事务实现原理)

    事务管理对于企业应用来说是至关重要的,即使出现异常情况,它也可以保证数据的一致性。spring支持编程式事务管理和声明式事务管理两种方式。编程式事务管理使用TransactionTemplate或者直接使用底层的PlatformTransactionManager。对于编程式事务管理,spring推荐使用TransactionTemplate。 声明式事务管理建立在

  • 破解中国电信华为无线猫路由(HG522-C)自己主动拨号+不限电脑数+iTV

    破解中国电信华为无线猫路由(HG522-C)自己主动拨号+不限电脑数+iTV

  • 数据库char转int_mysql string转int

    数据库char转int_mysql string转int展开全部首先char类型的必须是数字,将字符的数32313133353236313431303231363533e58685e5aeb931333431373262字转成数字,比如’0’转成0可以直接用加法来实现;例如:将pony表中的d进行排序,可d的定义为varchar,可以这样解决;select*fromponyorderby(d+0);在进行ifnull处理时,比如ifnu…

  • 订单支付流程

    订单支付流程购物车订单处理流程根据上图订单页面进行分析如何安全下订单进入购物车页面,点选商品(书籍)时,将商品(书籍)productId通过API传给后端,然后返回书籍价格显示给用户,如图1.点击结算按钮,将勾选的商品(书籍)productId包装成数组,传入API给后端,该API是复合接口,包括礼券是否可以使用、详细介绍等。后端API返回订单详情,并有签名加密的订单token,本地存储并将订…

  • 修改国内yum源

    修改国内yum源

  • Matlab fmincon函数用法

    Matlab fmincon函数用法这个函数在之前优化工具箱一文中已经介绍过,由于其应用广泛,所以这里通过实例单独整理一下其用法。一、基本介绍求解问题的标准型为minF(X)s.tAX<=bAeqX=beqG(x)<=0Ceq(X)=0VLB<=X<=VUB其中X为n维变元向量,G(x)与Ceq(X)均为非线性函数组成的向量,其它变量的含…

发表回复

您的电子邮箱地址不会被公开。

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