作者kenshin528 (不知恥)
看板NCCU07_SOCIO
標題[討論] 土法煉鋼抽樂透...
時間Mon Sep 24 15:55:27 2007
這幾天應該會想辦法修改一下...
此法的優點是
1.列出所有對獎號碼,並按照大小排序
2.語法較為簡單
缺點是
1.因為變項重複的case會刪掉,很難抽到1000個名單來兌獎
2.程式碼很冗長
3.無法自動計算中獎金額和花費
以下是我的步驟
1. 隨機跑6個1~49的數字 跑一千組
INPUT PROGRAM .
LOOP id = 1 to 1000.
COMPUTE first = trunc(uniform(48))+1 .
COMPUTE secend = trunc(uniform(48))+1 .
COMPUTE third = trunc(uniform(48))+1 .
COMPUTE fourth = trunc(uniform(48))+1 .
COMPUTE fifth = trunc(uniform(48))+1 .
COMPUTE sixth = trunc(uniform(48))+1 .
END CASE .
END LOOP .
END FILE .
END INPUT PROGRAM .
2.然後把依個CASE中有重複數字的CASE刪掉...
USE ALL.
SELECT IF(first ~= secend & first ~= third & first ~= fourth & first ~= fifth
& first ~= sixth
& secend ~= third & secend ~= fourth & secend ~= fifth & secend ~=
sixth
& third ~= fourth & third ~= fifth & third ~= sixth
& fourth ~= fifth & fourth ~= sixth
& fifth ~= sixth).
EXECUTE .
3.然後開始按數字大小排順序
a.先把最小的排出來
COMPUTE n_first = MIN(first,secend,third,fourth,fifth,sixth) .
EXECUTE .
b.刪掉最小的數字
DO IF (first>n_first) .
RECODE
first
(ELSE=Copy) INTO temp1 .
END IF .
DO IF (secend>n_first) .
RECODE
secend
(ELSE=Copy) INTO temp2 .
END IF .
DO IF (third>n_first) .
RECODE
third
(ELSE=Copy) INTO temp3 .
END IF .
DO IF (fourth>n_first) .
RECODE
fourth
(ELSE=Copy) INTO temp4 .
END IF .
DO IF (fifth>n_first) .
RECODE
fifth
(ELSE=Copy) INTO temp5 .
END IF .
DO IF (sixth>n_first) .
RECODE
sixth
(ELSE=Copy) INTO temp6 .
END IF .
c.從剩下的五個數字中 選出最小的
COMPUTE n_secend = MIN(temp1,temp2,temp3,temp4,temp5,temp6) .
EXECUTE .
剩下因為程式碼過於冗長 就不貼了 囧
4.然後把case依順序排好
SORT CASES BY
n_first (A) n_secend (A) n_third (A) n_fourth (A) n_fifth (A) n_sixth (A) .
目的是方便人工刪除重複的case
5.計算中獎的次數
a.未包括特別號,抽樣結果六個數字與開獎號碼相同的次數
COUNT
win1 = n_first n_secend n_third n_fourth n_fifth n_sixth (1) n_first
n_secend n_third n_fourth n_fifth n_sixth (16) n_first n_secend n_third
n_fourth n_fifth n_sixth (24) n_first n_secend n_third n_fourth n_fifth
n_sixth (31) n_first n_secend n_third n_fourth n_fifth n_sixth (35)
n_first n_secend n_third n_fourth n_fifth n_sixth (39) .
EXECUTE .
b.計算中獎次數(包括特別號),六個數字與開獎號碼相同的次數
6.計算中普獎的次數
DO IF (win1 = 3) .
COUNT
win_nom = win1 (3) .
END IF .
EXECUTE .
7.計算中六獎的次數(因為有特別號比沒有特別號多一個對獎數字,
所以只須計算中了特別號次數的比沒有特別號還要大的case即可)
DO IF (win2 > win1) .
COUNT
win_6 = win2 (4) .
END IF .
EXECUTE .
8.剩下獎項類推
DO IF (win1 = 4) .
COUNT
win_5 = win1 (4) .
END IF .
EXECUTE .
DO IF (win2 > win1) .
COUNT
win_4 = win1 (5) .
END IF .
EXECUTE .
DO IF (win1 = 5) .
COUNT
win_3 = win1 (5) .
END IF .
EXECUTE .
DO IF (win2 > win1) .
COUNT
win_2 = win1 (6) .
END IF .
EXECUTE .
DO IF (win1 = 6) .
COUNT
win_1 = win1 (6) .
END IF .
EXECUTE .
9.寫報告 列出對獎樂透的數量以及各種獎項的數量
SUMMARIZE
/TABLES=id
/FORMAT=NOLIST TOTAL
/TITLE='Case Summaries'
/MISSING=VARIABLE
/CELLS=COUNT .
Report
/FORMAT= CHWRAP(ON) PREVIEW(OFF) CHALIGN(BOTTOM) UNDERSCORE(ON)
ONEBREAKCOLUMN(OFF) CHDSPACE(1) SUMSPACE(0) AUTOMATIC NOLIST
BRKSPACE(0)
PAGE(1) MISSING'.' LENGTH(1, 59) ALIGN(LEFT) TSPACE(1) FTSPACE(1)
MARGINS(1,83)
/TITLE=
RIGHT 'Page )PAGE'
/VARIABLES
win_nom (VALUES) (RIGHT) (OFFSET(0)) (10)
win_6 (VALUES) (RIGHT) (OFFSET(0)) (10)
win_5 (VALUES) (RIGHT) (OFFSET(0)) (10)
win_4 (VALUES) (RIGHT) (OFFSET(0)) (10)
win_3 (VALUES) (RIGHT) (OFFSET(0)) (10)
win_2 (VALUES) (RIGHT) (OFFSET(0)) (10)
win_1 (VALUES) (RIGHT) (OFFSET(0)) (10)
/BREAK (TOTAL) 'Grand Total' (SKIP(1)) /SUMMARY
SUM( win_nom) SKIP(1) SUM( win_6 ) SUM( win_5 ) SUM( win_4 ) SUM( win_3 )
SUM( win_2 ) SUM( win_1 ) 'Sum' .
--
http://www.wretch.cc/album/kenshin528 <=這是美女相簿
網路日誌
http://www.wretch.cc/blog/kenshin528
(
C)lass 【 分組討論區 】
11 卡漫夢工廠 卡通, 漫畫, 動畫 [Ckmike]
4 C_J_Artist
作家 Σ日本漫畫家專區 [Ckmike]
10 TakahasiShin 作家 ◎****高橋真作品討論版**** kenshin528
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 125.231.229.88
※ 編輯: kenshin528 來自: 125.231.229.88 (09/24 15:58)
※ 編輯: kenshin528 來自: 125.231.229.88 (09/24 15:58)
→ kenshin528:要怎樣手抖一抖就出來阿 囧~ 09/24 16:09
推 FFWillie:如果刪掉有重複的組那不到1000組怎麼辦阿? 09/24 16:36
→ FFWillie:是一直跑到1000組都沒有重複嘛? 09/24 16:40
推 kenshin528:不會處理 囧... 09/24 21:24
推 kenshin528:我沒辦法跑出1000組... 09/24 21:49
推 happyyaya:"計數(count)"是個好東西 可以用來對獎 比較簡單又快 09/24 23:02
推 cragehsu:ㄟ我不懂耶,為什麼要care重複的組別? 09/25 23:54
→ cragehsu:電腦選號不是也會重複嗎? 09/25 23:55