随机生成序列的某一排列

随机生成1~n的某一排列,要求生成每种可能的排列的概率相同 。
算法描述:
给定数值分别为1~n的序列a,
循环变量i从1到n,每次循环将a[i]a[i]~a[n]中的随机某元素交换,最后a数组即为随机生成的某一排列。

#include <iostream>
#include <ctime>
using namespace std;
#define N 100005
int a[N];
int randInt(int a, int b)
{return rand()*rand()%(b-a+1)+a;
} 
int main()
{srand(time(NULL));int n;cin >> n;for(int i = 1; i <= n; ++i)a[i] = i;for(int i = 1; i <= n; ++i){int j = randInt(i, n);swap(a[i], a[j]);}for(int i = 1; i <= n; ++i)cout << a[i] << ' ';return 0;
}

原序列a,每个元素的值分别为 a 1 , a 2 , . . . , a n a_1,a_2,...,a_n a1,a2,...,an
证明:依照以上方法生成的每种排列的概率相同
探究生成排列 a x 1 a x 2 . . . a x n a_{x1}a_{x2}...a_{xn} ax1ax2...axn的概率
对于第1个数 a x 1 a_{x1} ax1。第1次交换,在第1~n个数中选择 a x 1 a_{x1} ax1的概率为 1 n \frac{1}{n} n1,将 a 1 a_1 a1 a x 1 a_{x1} ax1交换。
对于第2个数 a x 2 a_{x2} ax2。第2次交换,在第2~n个数中选择 a x 2 a_{x2} ax2的概率为 1 n − 1 \frac{1}{n-1} n11

对于第n个数 a x n a_{xn} axn。第n次交换,在第n~n个数中选择 a x n a_{xn} axn的概率为 1 1 1
根据乘法原理,生成排列 a x 1 a x 2 . . . a x n a_{x1}a_{x2}...a_{xn} ax1ax2...axn的概率为 1 n ∗ 1 n − 1 ∗ . . . ∗ 1 = 1 n ! \frac{1}{n}*\frac{1}{n-1}*...*1=\frac{1}{n!} n1n11...1=n!1
对于任意给定的排列,按照上述算法得到该排列的概率都是 1 n ! \frac{1}{n!} n!1,命题得证。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/18980.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【2024】C/C++框架和库超全总结

本文分为2部分&#xff0c;第一部分&#xff1a;值得学习的C/C语言开源项目&#xff1b;第二部分是开源框架和库 粉丝福利&#xff0c; 免费领取C/C 开发学习资料包、技术视频/项目代码&#xff0c;1000道大厂面试题&#xff0c;内容包括&#xff08;C基础&#xff0c;网络编程…

MATLAB分类与判别模型算法:基于LVQ神经网络的乳腺肿瘤诊断分类程序【含Matlab源码 MX_003期】

说明 实现基于LVQ&#xff08;Learning Vector Quantization&#xff0c;学习向量量化&#xff09;神经网络的乳腺肿瘤诊断分类任务。LVQ是一种监督学习算法&#xff0c;通常用于模式识别和分类任务。 算法思路介绍&#xff1a; 导入数据&#xff1a; 加载名为"data.mat&…

2024下半年软考报名人数较去年减少,仅52.77万

2024下半年软考报名人数 2024年上半年软考考试共计报考52.77万人&#xff0c;其中&#xff0c;初级资格5.12万人、中级资格24.37万人、高级资格23.28万人。 根据往年报名人数&#xff0c;本次考试人数是减少了的&#xff0c;原因分析如下&#xff1a; 1、原来报名热门专业系…

C++的unique_ptr::release

释放给调用方返回的存储指针的所有权&#xff0c;并将存储的指针值设置为nullptr。 使用 release接管unique_ptr存储的原始指针的所有权。 调用方负责返回的指针的删除。 unique-ptr设置为空的默认构造状态。 在调用到release后&#xff0c;您可以将兼容类型的另一个指针分配到…

SSL证书申请需要多久?

SSL证书作为一种重要的网络安全工具&#xff0c;能够确保网站数据传输的安全&#xff0c;保护用户隐私和企业数据不受侵害。本文将详细介绍SSL证书的申请流程以及所需时间&#xff0c;帮助用户更好地规划和实施网络安全策略。 SSL证书&#xff0c;也称为TLS证书或HTTPS证书&am…

rest_asyncio 简化和管理异步python编程中的 REST API 调用

简介 rest_asyncio 是一个 Python 库,用于简化和管理异步编程中的 REST API 调用。它结合了 aiohttp 和 asyncio,提供了一种高效的方式来处理网络请求和响应,特别是在需要大量并发请求的场景下,例如爬虫、批量数据获取或实时数据处理。 以下是 rest_asyncio 的主要功能和…

富格林:领会正规阻挠欺诈技巧

富格林悉知&#xff0c;在当今经济不稳定的环境下&#xff0c;投资者们越来越倾向于将资金投入到相对安全和稳定的资产中&#xff0c;而黄金往往是他们的首选之一。但现货黄金市场相对复杂&#xff0c;因此要想在这个市场中立足脚跟就得领会正规阻挠欺诈的技巧。以下富格林为大…

如何优化工时表管理,提升团队效率?

时间就是金钱&#xff0c;对于企业来说&#xff0c;有效的工时表管理可以让一切变得不同。 本文将介绍控制工时表并将业务推向新高度的策略和工具。从多级审批工作流程到利用技术&#xff0c;了解如何克服常见挑战&#xff0c;收获简化工时管理流程的回报。 工时表管理,工时表…

Ardupilot开源飞控之AP_Follow

Ardupilot开源飞控之AP_Follow 1. 源由2. 定义2.1 ModeFollow类2.1.1 ModeFollow::update2.1.2 ModeFollow::_enter2.1.3 ModeFollow::_exit 2.2 AP_Follow类2.2.1 AP_Follow::handle_msg2.2.2 AP_Follow::get_target_location_and_velocity2.2.3 AP_Follow::get_velocity_ned …

getContentView(mBinding.getRoot()); 会导致内存泄露吗?里面有SurfaceView ViewBinding

在上述代码中&#xff0c;ActivityTestingBinding 是一个 Data Binding 库生成的类&#xff0c;用于绑定 XML 布局到 Activity 中。inflate(getLayoutInflater()) 用于将布局文件解析并转换为对应的视图层次结构。然后 getWindow().setFlags() 设置窗口属性&#xff0c;保持屏幕…

小型海外仓如何选择第三方海外仓系统:多看多对比,性价比优先

在现在的海外仓市场中&#xff0c;中小型海外仓&#xff0c;家庭海外仓的占比还是非常大的。这类海外仓的一个共同点就是资金有限&#xff0c;管理能力比较弱&#xff0c;很难实现规模效应。 对于这类海外仓来说&#xff0c;选择一套合适的第三方海外仓系统&#xff0c;对提升…

好用的国产大文件传输软件有哪些,快来看看吧

在这个数字化飞速发展的时代&#xff0c;我们每天都在与各种文件打交道&#xff0c;从简单的文档到庞大的视频素材&#xff0c;文件的体积越来越大&#xff0c;传统的文件传输方式逐渐显得力不从心。面对这个挑战&#xff0c;大文件传输软件应运而生&#xff0c;它们不仅解决了…

note-网络是怎样连接的4 接入网和网络运营商

助记提要 网络包从用户传输到互联网的过程信号的调制方式ADSL使用多个频率的合成波传输信号分离器的作用电话线的特点光纤的构造光纤的原理单模光纤和多模光纤光纤接入网的两种接入方式PPP拨号上网过程ADSL和FTTH使用PPPoE的方式PPPoE的规则隧道其他接入认证方式 PPPoA和DHCP网…

基于大数据的高校生源可视化分析系统

基于大数据的高校生源可视化分析系统 “A Visual Analysis System for Higher Education Student Enrollment based on Big Data” 完整下载链接:基于大数据的高校生源可视化分析系统 文章目录 基于大数据的高校生源可视化分析系统摘要第一章 引言1.1 研究背景1.2 研究目的1.…

adam优化器计算过程(tensorflow)

一、adam原理 原理 应用 优点 缺点 二、手动实现 一步一步计算 三、使用tensorflow api实现 api使用 四、一个具体的深度学习的例子

随后记: uniapp uview u-dropdown 下拉菜单固定高度滑动不生效

使用u-dropdown 下拉组件 按照uview官网讲解使用 配置根本不生效 scroll-y"true" style"height: 200rpx;" 但是在下拉的时候&#xff0c;不能上下滑动 &#xff0c;原因是自带的遮罩层挡住了 解决办法&#xff1a;在下拉菜单打开和关闭的时候&#xff0c…

linux 目录 /usr/lib和 /usr/lib64区别

在 Linux 系统中&#xff0c;/usr/lib 和 /usr/lib64 目录通常用于存储库文件&#xff08;libraries&#xff09;&#xff0c;这些库文件是程序运行时所需的共享代码和数据。这两个目录之间的主要区别在于它们所包含的库文件的架构&#xff08;architecture&#xff09;和用途。…

Python函数式编程进阶:用函数实现设计模式

文章目录 函数式编程进阶&#xff1a;用函数实现设计模式案例实现&#xff1a;构建“策略”模式使用函数实现”策略“模式享元 选择最佳策略&#xff1a;简单的方式 globals关键字 函数式编程进阶&#xff1a;用函数实现设计模式 案例实现&#xff1a;构建“策略”模式 策略模…

Java 18新特性:探索Java的未来

目录 1. 增强的模式匹配 2. JEP 411&#xff1a;String解构 3. JEP 395&#xff1a;Records增强 4. JEP 398&#xff1a;Deprecate警告增强 5. JEP 409&#xff1a;Sealed类和接口增强 6. API改进 6.1 集合API改进 6.2 流API改进 6.3 IO/NIO API改进 7. 性能优化 7.…

从0开始带你成为Kafka消息中间件高手---第三讲

从0开始带你成为Kafka消息中间件高手—第三讲 实际上来说&#xff0c;每次leader接收到一条消息&#xff0c;都会更新自己的LEO&#xff0c;也就是log end offset&#xff0c;把最后一位offset 1&#xff0c;这个大家都能理解吧&#xff1f;接着各个follower会从leader请求同…