瀏覽單個文章
shukae
*停權中*
 
shukae的大頭照
 

加入日期: Jun 2002
您的住址: 仙女銀河星系, 跨克星
文章: 1,791
就算用 basic
也可輕鬆寫出來, 25 列搞定....
要不是真實模式有單一節區64k大小限制
不然一次產生10萬組也不是問題
本來想用Perl寫, 不過 QB 大家應該比較容易看懂意思
直接轉成 C 也應該比較方便吧


DECLARE FUNCTION rand! (start!, ends!) ' 自訂函數
DIM ss$(1 TO 1000) ' 宣告 1 ~ 1000 的字串陣列
DIM num(0 TO 9) ' 宣告 0 ~ 9 的數字陣列

' 產生一大群長度介於 1~50 的數字字串組 (不固定長度)
' 產生組數大於1小於1000 (不固定組數)
FOR a = 1 TO rand(1, 1000)
FOR b = 1 TO rand(1, 50)
ss$(a) = ss$(a) + CHR$(rand(48, 57))
NEXT
NEXT

' 開始計算每組數字與其中數字出現的次數
FOR a1 = 1 TO a - 1
FOR b1 = 1 TO LEN(ss$(a1))
x = ASC(MID$(ss$(a1), b1, 1)) - 48 ' 把字串的數字轉成ASCII碼
num(x) = num(x) + 1 ' 再減 48 就會取得 "值"
NEXT ' 用這個 "值" 當成陣列的索引, 直接 +1
NEXT ' 如此就可以達到統計出現次數的目的

' 輸出結果
FOR z = 0 TO 9
PRINT z; "總共出現: "; num(z); "次"
NEXT

' 自定函數
FUNCTION rand (start, ends) ' 設定起迄數字
RANDOMIZE TIMER ' 設定亂數種子
rand = INT(RND * (ends - start + 1)) + start ' 產生亂數
END FUNCTION
舊 2003-10-24, 01:05 AM #14
回應時引用此文章
shukae離線中