排列組合Cn和An公式「隨機排列公式」

我們知道,排序功能,List中有、Table中也有,單純的數字排序在我們這個問題沒用意義,我們需要生成一列於字符串等長的隨機數,然後通過表格排序隨機數,實現字符的隨機排列。

我們會用到函數:

· Text.ToList:將字符串變成列表

· List.Random:生成隨機數列表

· List.Count:列表元素計數

· Table.Sort:表排序

· Text.Combine:文本合併

這過程中,還需要有表格轉換函數,是使用Recoard.ToTable、還是Table.FormColumns?

Recoard.ToTable

我們用字符作為Record的Name,隨機數作為Record的Value,然後轉換成表格,排序實現隨機排列,下面分步來做:

Text.ToList:

Power Query M函數實現字符串內的字符隨機排列

同樣長度的隨機數列表:

Power Query M函數實現字符串內的字符隨機排列

組成Record:

Power Query M函數實現字符串內的字符隨機排列

轉成表格:

Power Query M函數實現字符串內的字符隨機排列

Value列排序:

Power Query M函數實現字符串內的字符隨機排列

提取Name列合併文本:

Power Query M函數實現字符串內的字符隨機排列

似乎很順利就完成了,字符串內部的亂序,我們修改一下數據源看看:

Power Query M函數實現字符串內的字符隨機排列

看看能不能實現亂序:

Power Query M函數實現字符串內的字符隨機排列

“無邊落木蕭蕭下”,Record的Name不能重複,所以報錯。

所以上面的過程適合非重複字符串的亂序。如果有重複的字符,我們還需要修改我們的過程。

添加列的方式行不通,我做過測試,先把字符列錶轉換成表格,然後添加隨機數列,即使指定了數據類型,也無法實現排序:

Power Query M函數實現字符串內的字符隨機排列

所以這個隨機數列,需要在組表之前就生成,不能後添加。

Table.FormColumns

用之前做過的字符串列表與隨機數列表組成表格:

Power Query M函數實現字符串內的字符隨機排列

排序:

Power Query M函數實現字符串內的字符隨機排列

我們整理一下,把文本合併:

Power Query M函數實現字符串內的字符隨機排列

即使是標點符號重複,也不要緊,都能實現整個字符串內的字符隨機排列。

我們總結一下,最後這種方法更通用一些,要注意的地方就是隨機數的生成,必須是在表格生成之前,如果是後添加的隨機數列,不能排序,具體啥原因咱也不了解。

原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/209230.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
投稿專員的頭像投稿專員
上一篇 2024-12-08 15:26
下一篇 2024-12-08 15:26

相關推薦

發表回復

登錄後才能評論