如何隨機生成指定數目的國標漢字?

2021-09-30 02:27:41 字數 2268 閱讀 2015

為了使每乙個漢字有乙個全國統一的**,2023年,我國頒布了第乙個漢字編碼的國家標準: gb2312-80《資訊交換用漢字編碼字符集》基本集,這個字符集是我國中文資訊處理技術的發展基礎,也是目前國內所有漢字系統的統一標準。由於國標碼是四位十六進製制,為了便於交流,大家常用的是四位十進位制的區位碼。所有的國標漢字與符號組成乙個94×94的矩陣。在此方陣中,每一行稱為乙個"區",每一列稱為乙個"位",因此,這個方陣實際上組成了乙個有94個區(區號分別為0 1到94)、每個區內有94個位(位號分別為01到94)的漢字字符集。乙個漢字所在的區號和位號簡單地組合在一起就構成了該漢字的"區位碼"。在漢字的區位碼中,高兩位為區號,低兩位為位號。 在區位碼中,01-09區為682個特殊字元,16~87區為漢字區,包含6763個漢字 。其中16-55區為一級漢字(3755個最常用的漢字,按拼音字母的次序排列),56-87區為二級漢字(3008個漢字,按部首次序排列)。

所以,當我們需要n個任意漢字時,我們不必建乙個全部漢字表,而是利用區位碼實現常用漢字的提取。

下面的**可以實現任意數目漢字的生成:

private sub getrndhanzi(byval n as integer)

dim s() as string, i as integer

dim temp1 as integer, temp2 as integer

redim s(1 to n)

randomize

for i = 1 to n

temp1 = 16 + int(rnd * 72)

if temp1 = 55 then

temp2 = int(rnd * 90) '一級漢字從1601-1694,1701-1794,.....5401-5494,5501-5589,共94*40-5=3755 個漢字

else

temp2 = int(rnd * 95) '二級漢字從5601-5694,5701-5794,.....8601-8694,8701-8794,共94*32=3008 個漢字

end if

s(i) = chr("&h" & hex(temp1 + 160) & hex(temp2 + 160))

next

debug.print join(s, "")'輸出

end sub

private sub command1_click()

dim i as integer

for i = 1 to 25 '分別生成1-25個任意漢字

getrndhanzi i

next

end sub

輸出:腿

夫敞途罨椽

涅搦侄鋱

榨藸禒艟球

枵舟斟盯灘桫

猻暗田苫撂蕾岢

冠澧炫鱝噘惺馘柘

巧愁炔嗶臆策秈錠昏

紶假媼慈乘嘎膚景濡薤

呋刨鐘灰櫸懋唇弱獻囟垤

均耋撤闐驛邇愍殞堝砸宕薅

蒹翦俄形碌哧烀爝懶繚嬪捭渾

瑾碸癧嚌遒濂勾彐綘珩苓就萌炳

光槨旖趁鯤頎壕狁媼暑額愾帷淤黹

湫薰褲降旺廓淳傻蛻脬蓀色注紫劾吾

陶瀝瑗骶埴於喃刮癭突賅斛簡銓觴抨唼

格鴿乜衍夙菀鱺敗陸褐噲苑滓淆踵訖頭綁

德泠婷嶴湔池槳郅峁汩卒控訴芻鏜椎鬣越嫉

義懂聶其定鰳脯膪巰吐昏罰返抖陵沌戧喘茺緙

廢霧旯浠疼贓勳妓鱒埏幫盂蕹朐裂祆羶拌脎威純

宛免作繡稞涑梟搬懌旦熨呈棄馳翔聚飾栩燧艴氫貧

豕源髑乍蚍夏己履畢芤毀簣子褊崖壞忑黴鈿瘢駔遷裨

獬紛胚槳衫蹣瘋祧武琢唚酃踱免逘濁頇坐磬挫鄶嬸繆錳

拽技薯帙陝槲逗蜱嘧雌怙詿橢踉盔鋶認致暝榴櫱逆捻蟎噬 附:

漢字與區位碼轉換**:

function quwei(byval x as string) as string '獲得某漢字或字元對應的的區位碼

if asc(x) >= 0 then exit function

x = hex(asc(x))

quwei = format(cdec("&h" & left(x, 2)) - 160, "00") & format(cdec("&h" & right(x, 2)) - 160, "00")

end function

function hanzi(byval x as string) as string'獲得某區位碼對應漢字或字元

hanzi = chr("&h" & hex(val(left(x, 2)) + 160) & hex(val(right(x, 2)) + 160))

end function

C 生成指定數目的互不相同的隨機數

dotnet.frameword中提供了乙個專門產生隨機數的類system.random,計算機並不能產生完全隨機的數字,它生成的數字被稱為偽隨機數,它是以相同的概率從一組有限的數字中選取的,所選的數字並不具有完全的隨機性,但就實用而言,其隨機程度已經足夠了。在使用隨機數時,要先初始化乙個隨機數發生...

Django Models隨機獲取指定數量資料方法

下面就直接發 了 class randommanager models.manager def get queryset self return super randommanager,self get queryset order by 使用的時候 class trainword models.m...

Java生成指定範圍的隨機數或指定陣列中的隨機數

一 生成指定範圍的隨機數 要生成在 min,max 之間的隨機整數,得到0到9的隨機數 return public int getrangedate random.nextint max 表示生成 0,max 之間的隨機數,然後對 max min 1 取模。以生成 10,20 隨機數為例,首先生成0...