全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1873
推到 Plurk!
推到 Facebook!

請益...如何將亂數與日期合併使用

答題得分者是:P.D.
pchou
一般會員


發表:2
回覆:1
積分:0
註冊:2011-11-30

發送簡訊給我
#1 引用回覆 回覆 發表時間:2011-11-30 21:24:46 IP:140.125.xxx.xxx 訂閱
想請教各位前輩
如何以日期做隨機亂數,
例如在100/1/1日~100/1/7日中隨機選取一天,
100/1/8日~100/1/14日中隨機選取一天,
100/1/15日~100/1/21日中隨機選取一天,
100/1/22日~100/1/28日中隨機選取一天,
100/1/29日~100/2/5日中隨機選取一天,
而在100/1/1日~100/1/31日中隨機選出一個日期 若與有撞期能夠重新隨機~

拜託各位前輩請囊相授~無限感恩
------
均~
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2011-12-01 00:15:39 IP:118.169.xxx.xxx 未訂閱
好像是 "作業文" 哦?

亂數 本站非常多討論, 不妨先搜尋一下
給你一個重點
randomize
random
這兩組在決定亂數產生
如果會了, 利用random 在每一組日期範圍決定一個符合區間的日期出來,
再按你所寫的規則進行判斷就可以
===================引 用 pchou 文 章===================
想請教各位前輩
如何以日期做隨機亂數,
例如在100/1/1日~100/1/7日中隨機選取一天,
100/1/8日~100/1/14日中隨機選取一天,
100/1/15日~100/1/21日中隨機選取一天,
100/1/22日~100/1/28日中隨機選取一天,
100/1/29日~100/2/5日中隨機選取一天,
而在100/1/1日~100/1/31日中隨機選出一個日期 若與有撞期能夠重新隨機~

拜託各位前輩請囊相授~無限感恩
pchou
一般會員


發表:2
回覆:1
積分:0
註冊:2011-11-30

發送簡訊給我
#3 引用回覆 回覆 發表時間:2011-12-01 15:23:26 IP:140.125.xxx.xxx 訂閱
前輩您誤會了,這是我想寫出一個可以隨機排行程的程式想應用於公司裡面 由於才剛接觸DELPHI苦無對策,才來尋求幫助的
JOW
前輩所修改的,接下來要往哪裡走比較好?





















end.


------
均~
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#4 引用回覆 回覆 發表時間:2011-12-01 21:39:32 IP:118.169.xxx.xxx 未訂閱
我沒有研究jow的程式, 不知那段是做何用, 我自己的亂數範例給你參考

function TForm1.button1Click(Sender: TObject);
var i, j: integer;
mH, mM, mS, mSS: word;
rnd1, rnd2: integer;
code: string;
begin
code:= '';
Randomize;
for i:= 1 to 5 do begin
j:= 0;
repeat
DecodeTime(Time, mH, mM, mS, mSS);
rnd1:= round((mH * mM - mS) * mSS);
rnd2:= Random(rnd1) mod 90;
if (rnd2 in [48..57]) or (rnd2 in [65..90]) then begin
code:= code Chr(rnd2);
inc(j);
end;
until j=5;
end;
result := code;
end;


重點提示
要啟用亂數種子, 要先呼叫 Randomize
要取得亂數, 要執行 Random(rnd1)
但如果 md1 是一佪固定值的話, 所取到的亂數一定一樣 Random(1) <> Random(2), 但 Random(1)=Random(1)
因此你要想辦法如何改變md1值, 否則不管做幾次, 亂數都是同一個
所以上面一大段計算 md1 的公式, 其實只是在讓亂數源不要每次都取到 一樣的值
計算公式越複雜, md1值越大, 就越不容易發生重覆現象
使用質數做為基準引值是最好的辦法, 因為質數只能被1及本身整除
所以 md1 就可以大量運用 - * / 來導一個公式

in [48..57] 判斷只是要把值換成 ascii 碼
而我這段功能是由系統由亂數取出25個隨機字元變成序號(就像windows序號一樣)
而你要的功能與這個都一樣主旨沒變, 重點不在於如何取亂數, 因為亂數取值沒有什麼技巧,
你真正要去研究的是, 亂數取出後, 如何變成日期資料,
但這也不是難事, 亂數是一個小數值,
1.如何把小數值換成整數值
2.如何把整數值判斷在日期範圍內, 1-30, 1-31, 1-28, 1-29
3.要有幾段隨機行程, 就取幾次亂數用設定好的公式代入即可
pprayer
高階會員


發表:35
回覆:185
積分:174
註冊:2002-03-13

發送簡訊給我
#5 引用回覆 回覆 發表時間:2011-12-02 20:47:17 IP:114.32.xxx.xxx 訂閱
你可以uses delphi裡的有個Unit  叫 DateUtils

用DaysBetween 取出你要排程的兩個日期的天數差
比如說
Date1 := 100/1/1
Date2 := 100/1/7
iDays := DaysBetween(Date2,Date2);
dDays := Random(iDays)
Date1 dDays 就是你隨機選取的一天


===================引 用 pchou 文 章===================
想請教各位前輩
如何以日期做隨機亂數,
例如在100/1/1日~100/1/7日中隨機選取一天,
100/1/8日~100/1/14日中隨機選取一天,
100/1/15日~100/1/21日中隨機選取一天,
100/1/22日~100/1/28日中隨機選取一天,
100/1/29日~100/2/5日中隨機選取一天,
而在100/1/1日~100/1/31日中隨機選出一個日期 若與有撞期能夠重新隨機~

拜託各位前輩請囊相授~無限感恩
系統時間:2024-04-23 20:07:02
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!