上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
akwang
註冊時間: 2004-11-06 文章: 24 來自: ccf
第 1 樓
|
發表於: 星期五 十二月 17, 2004 9:19 pm 文章主題: 请教一个产生随机数的的算法(抽奖用的) |
|
|
原来用过一个,但是一次只产生一个幸运者,用的这个算法 :aa(变量)=round(rand()*reccount(),0)
现在要求一次能抽出5个幸运者,不知道用什么算法能实现
而且这五个幸运者是不能一样的 |
|
回頂端 |
|
 |
朱育興
註冊時間: 2003-08-25 文章: 661 來自: 台中市大里區
第 2 樓
|
發表於: 星期五 十二月 17, 2004 10:43 pm 文章主題: |
|
|
代碼: |
DIMENSION M_aSelectNo(1)
M_aSelectNo(1) = -1
M_nRowsOfArray = 0
DO WHILE M_nRowsOfArray < 5
W1_nCurNo = ROUND(RAND(-1)*RECCOUNT(),0)
IF ASCAN(M_aSelectNo,W1_nCurNo) = 0
M_nRowsOfArray = M_nRowsOfArray + 1
DIMENSION M_aSelectNo(M_nRowsOfArray)
M_aSelectNo(M_nRowsOfArray) = W1_nCurNo
ENDIF
ENDDO
|
_________________ 希望有更多人來參與
VFP wiki - 需要大家一起完成的VFP電子書與FAQ |
|
回頂端 |
|
 |
akwang
註冊時間: 2004-11-06 文章: 24 來自: ccf
第 3 樓
|
發表於: 星期五 十二月 17, 2004 10:48 pm 文章主題: |
|
|
朱育興 寫到: | 代碼: |
DIMENSION M_aSelectNo(1)
M_aSelectNo(1) = -1
M_nRowsOfArray = 0
DO WHILE M_nRowsOfArray < 5
W1_nCurNo = ROUND(RAND(-1)*RECCOUNT(),0)
IF ASCAN(M_aSelectNo,W1_nCurNo) = 0
M_nRowsOfArray = M_nRowsOfArray + 1
DIMENSION M_aSelectNo(M_nRowsOfArray)
M_aSelectNo(M_nRowsOfArray) = W1_nCurNo
ENDIF
ENDDO
|
|
非常感谢你,不过我是初学者,我在你这里找不到我想要的变量阿
我怎么用指针只想那个纪录阿?
能帮我解释一下你这几段吗?
多谢了,麻烦您了 |
|
回頂端 |
|
 |
garfield Site Admin

註冊時間: 2003-01-30 文章: 2160
第 4 樓
|
發表於: 星期五 十二月 17, 2004 10:57 pm 文章主題: |
|
|
如果你的 reccount()有點大, 尚須注意 set deci to 小數位數
ROUND(RAND(-1)*RECCOUNT(),0) 會不為有最有極大值和極小值的問題, 須不須要+1 _________________ 利用>>搜尋<<的功能會比問的還要快得到答案. |
|
回頂端 |
|
 |
akwang
註冊時間: 2004-11-06 文章: 24 來自: ccf
第 5 樓
|
發表於: 星期五 十二月 17, 2004 10:57 pm 文章主題: |
|
|
研究了一下M_aSelectNo(1)好像是变量不过我运行了一下,提示我纪录超出范围。 |
|
回頂端 |
|
 |
朱育興
註冊時間: 2003-08-25 文章: 661 來自: 台中市大里區
第 6 樓
|
發表於: 星期五 十二月 17, 2004 11:50 pm 文章主題: |
|
|
代碼: |
DIMENSION M_aSelectNo(1)
M_aSelectNo(1) = -1
M_nRowsOfArray = 0
DO WHILE M_nRowsOfArray < 5
W1_nCurNo = ROUND(RAND(-1)*RECCOUNT(),0)
IF ASCAN(M_aSelectNo,W1_nCurNo) = 0
M_nRowsOfArray = M_nRowsOfArray + 1
DIMENSION M_aSelectNo(M_nRowsOfArray)
M_aSelectNo(M_nRowsOfArray) = W1_nCurNo
ENDIF
ENDDO
FOR W1_SUB_A = 1 TO ALEN(M_aSelectNo,1)
? M_aSelectNo(W1_SUB_A) && 這就是你要的 5 個不一樣的號碼,要如何運用就由你自己處理
ENDFOR
|
_________________ 希望有更多人來參與
VFP wiki - 需要大家一起完成的VFP電子書與FAQ |
|
回頂端 |
|
 |
akwang
註冊時間: 2004-11-06 文章: 24 來自: ccf
第 7 樓
|
發表於: 星期六 十二月 18, 2004 9:57 am 文章主題: |
|
|
不知道为什么总是提示纪录超出范围 |
|
回頂端 |
|
 |
bin1x
註冊時間: 2004-08-27 文章: 462
第 8 樓
|
發表於: 星期六 十二月 18, 2004 10:45 am 文章主題: |
|
|
紀錄超出範圍
有種可能
索引被修改
我還曾被捉弄到,前幾百筆沒問題,
(資料庫好像是循序索引),到了某一筆就出問題
跳過那一筆就沒事 |
|
回頂端 |
|
 |
akwang
註冊時間: 2004-11-06 文章: 24 來自: ccf
第 9 樓
|
發表於: 星期六 十二月 18, 2004 11:38 am 文章主題: |
|
|
bin1x 寫到: | 紀錄超出範圍
有種可能
索引被修改
我還曾被捉弄到,前幾百筆沒問題,
(資料庫好像是循序索引),到了某一筆就出問題
跳過那一筆就沒事 |
请问有解决的方法吗?我是初学者 |
|
回頂端 |
|
 |
bin1x
註冊時間: 2004-08-27 文章: 462
第 10 樓
|
發表於: 星期六 十二月 18, 2004 2:17 pm 文章主題: |
|
|
系統中通常都會寫重建索引
比較努力的人
會將所有索引tag都記住之後
delete tag all
然後逐一重建
在寫程式我比較懶
reindex 就給他用出去了
如果.cdx檔被部份修改
努力一點問題才會解決 |
|
回頂端 |
|
 |
朱育興
註冊時間: 2003-08-25 文章: 661 來自: 台中市大里區
第 11 樓
|
|
回頂端 |
|
 |
akwang
註冊時間: 2004-11-06 文章: 24 來自: ccf
第 12 樓
|
發表於: 星期三 十二月 22, 2004 12:40 pm 文章主題: |
|
|
终于找到原因了
是因为当结果是0时报错了
谢谢大家
现在有个问题是click有时候响应的慢,不知道什么原因 |
|
回頂端 |
|
 |
|