隨機生成序列的某一排列

隨機生成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} ax1?ax2?...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} n?11?

對于第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} ax1?ax2?...axn?的概率為 1 n ? 1 n ? 1 ? . . . ? 1 = 1 n ! \frac{1}{n}*\frac{1}{n-1}*...*1=\frac{1}{n!} n1??n?11??...?1=n!1?
對于任意給定的排列,按照上述算法得到該排列的概率都是 1 n ! \frac{1}{n!} n!1?,命題得證。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/18980.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/18980.shtml
英文地址,請注明出處:http://en.pswp.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請求同…