根據字元出現的權重生成字串

2021-06-25 22:50:23 字數 665 閱讀 1443

聽過一些小夥伴被問到乙個問題,題目就是:

給你乙個字串,還有這些字串出現的權重,讓你隨機生成字串,並且字元的權重越高,出現的概率越大。

分析:假設有三個字元:a , b ,c ,它們的權重分別是2,3,5。我們要生成的字串中的字元必須是這三個字元之一,因為但是權重不同,a,b,c分別佔總權重的比例是:20%,30%,50%,這也是它們生成的概率,概率都出來了,那就得根據概率多的,命中的概率越多,於是,來分配乙個數字區間[1,10],然後按照出現的概率來分每個字母占用的子區間,概率高的,占用的就越高,可以這樣分配:a-[1,2] , b-[3,5],c-[6,10],我們用rand()來生成乙個隨機數,如果生成的數不是[1,10]之內的,就丟棄掉,這樣就可以使在[1,10]之間生成每個數的概率都是一樣的,然後根據每次生成的數字去找屬於哪個字元的,就選用哪個字元。偽**如下:

def procedure:

a<-[1,2], b<-[3,5], c<-[6,10]

num <-rand()

if num in

[1, 10]:

if num in [1, 2]:

return a

else if num in [3, 5]:

return b

else return c

else return procedure

根據字元分割字串

create or replace procedure get split v string1 in varchar2,輸入的字串 v start in number,開始擷取的位置 v length in number,擷取的字元個數 v split in varchar2 分隔符號 as v s...

根據字串分組

今天要做乙個根據字串分組,然後集體執行乙個操作,想了一上午,動態建立陣列什麼的,最後還是用了list。list alllist new arraylist string m1 a123 x1 string m2 a124 x1 string m3 a125 x2 string m4 a126 x2 ...

生成字串

description 假設乙個字串只由字元 0 1 組成,其中字元 表示該字元可由字元 0 或 1 替代。現有一些字串,根據這些字串生成所有可生成的字串。如 可生成 可生成注意後乙個例子中 01 並沒有生成新的字串。input 輸入包含多組測試資料。每組資料的第一行是兩個整數m,n 1 m 15,...