VFP 愛用者社區 首頁 VFP 愛用者社區
本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入

请教一个产生随机数的的算法(抽奖用的)

 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
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
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 MSN Messenger
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
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 MSN Messenger
akwang



註冊時間: 2004-11-06
文章: 24
來自: ccf

第 7 樓

發表發表於: 星期六 十二月 18, 2004 9:57 am    文章主題: 引言回覆

不知道为什么总是提示纪录超出范围Sad
回頂端
檢視會員個人資料 發送私人訊息
bin1x



註冊時間: 2004-08-27
文章: 462


第 8 樓

發表發表於: 星期六 十二月 18, 2004 10:45 am    文章主題: 引言回覆

紀錄超出範圍
有種可能
索引被修改
我還曾被捉弄到,前幾百筆沒問題,
(資料庫好像是循序索引),到了某一筆就出問題
跳過那一筆就沒事
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 參觀發表人的個人網站 MSN Messenger
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檔被部份修改
努力一點問題才會解決
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 參觀發表人的個人網站 MSN Messenger
朱育興



註冊時間: 2003-08-25
文章: 661
來自: 台中市大里區

第 11 樓

發表發表於: 星期日 十二月 19, 2004 12:30 am    文章主題: 引言回覆

TO akwang

你是在什麼地方用什麼程式碼產生「記錄超出範圍」的?

_________________
希望有更多人來參與
VFP wiki - 需要大家一起完成的VFP電子書與FAQ
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 MSN Messenger
akwang



註冊時間: 2004-11-06
文章: 24
來自: ccf

第 12 樓

發表發表於: 星期三 十二月 22, 2004 12:40 pm    文章主題: 引言回覆

终于找到原因了
是因为当结果是0时报错了
谢谢大家
现在有个问题是click有时候响应的慢,不知道什么原因
回頂端
檢視會員個人資料 發送私人訊息
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
1頁(共1頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
無法 在這個版面附加檔案
無法 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作