線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:5574
推到 Plurk!
推到 Facebook!

亂數取得.......數字

答題得分者是:william
nlmnrke
一般會員


發表:5
回覆:16
積分:4
註冊:2004-11-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-11-28 14:54:18 IP:211.23.xxx.xxx 未訂閱
各位大大 能傳授一下嗎... 我要如何才能亂數取得 如下 [1,3,4,5,7,9] 亂數取其一 [2,3,6] 亂數取其一 [0,4,5,8,9] 亂數取其一 裏頭的數字可以自己丟....
jow
尊榮會員


發表:66
回覆:751
積分:1253
註冊:2002-03-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-11-28 15:39:33 IP:220.130.xxx.xxx 未訂閱
 
procedure TForm1.Button1Click(Sender: TObject);
var
  X: Byte;
  Sample: array of Byte;
  I: Integer;
begin
  //產生Sample
  SetLength(Sample, Random(10) 1);
  for I := 0 to Length(SetLength)-1 do
    Sample[I] := Random(10);      //X 代表你要的亂數
  X := Sample[Random(Length(Sample))];    end;
發表人 - jow 於 2005/11/28 18:21:33
nlmnrke
一般會員


發表:5
回覆:16
積分:4
註冊:2004-11-17

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-11-28 16:51:42 IP:211.23.xxx.xxx 未訂閱
謝謝jow的回覆.. 不過我就是不知要如何把 我要亂選的數字 丟進去 也不知要丟到那 [1,3,4,5,7,9] 亂數取其一 or [2,3,6] 亂數取其一 or [0,4,5,8,9] 亂數取其一 很模糊......
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-11-28 17:15:41 IP:147.8.xxx.xxx 未訂閱
function GetRandom(const ValueSet: array of integer): integer;
begin
    Result := ValueSet[random(High(ValueSet)-Low(ValueSet) 1)];
end;
then...
x := GetRandom([1,3,4,5,7,9]);
x := GetRandom([2,3,6]);
x := GetRandom([0,4,5,8,9]);
http://pywong.hk.st
jow
尊榮會員


發表:66
回覆:751
積分:1253
註冊:2002-03-13

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-11-28 18:20:55 IP:220.130.xxx.xxx 未訂閱
 
interface    uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, 
  Controls, Forms,Dialogs, StdCtrls;    type      TArrayofByte = array of Byte;      TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    function CustomSample(SampleCount: Integer): TArrayOfByte;
    function CustomRandom(Sample: TArrayOfByte): Byte;
  end;    var
  Form1: TForm1;    implementation    {$R *.dfm}    function TForm1.CustomRandom(Sample: TArrayOfByte): Byte;
begin
  if Sample = nil then Result := Byte(-1)
  else Result := Sample[Random(Length(Sample))];
end;    function TForm1.CustomSample(SampleCount: Integer): TArrayOfByte;
var
  I: Integer;
begin
  if SampleCount < 1 then Result := nil
  else begin
    SetLength(Result, SampleCount);
    for I := 0 to SampleCount-1 do
      Result[I] := Random(256);//Sample Range 0..255
  end;
end;    procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(IntToStr(CustomRandom(CustomSample(5))));
end;
nlmnrke
一般會員


發表:5
回覆:16
積分:4
註冊:2004-11-17

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-11-30 09:03:03 IP:211.23.xxx.xxx 未訂閱
謝謝 jow 跟版大的相助 版大的 function GetRandom(const ValueSet: array of integer): integer; begin Result := ValueSet[random(High(ValueSet)-Low(ValueSet) 1)]; end; 要如何改寫 才能做到真真亂數取得,不然重跑,都一樣
jow
尊榮會員


發表:66
回覆:751
積分:1253
註冊:2002-03-13

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-11-30 09:21:29 IP:220.130.xxx.xxx 未訂閱
procedure TForm1.FormCreate(Sender: TObject);
begin
  Randomize;
end;
發表人 - jow 於 2005/11/30 09:24:07
acqua
一般會員


發表:3
回覆:24
積分:20
註冊:2005-09-13

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-11-30 09:26:58 IP:61.218.xxx.xxx 未訂閱
  function GetRandom(const ValueSet: array of integer): integer;
  begin
     Randomize;   //這個指令可使亂數種子混亂,讓你每次重新執行都不一樣 
     Result := ValueSet[random(High(ValueSet)-Low(ValueSet) 1)];
  end;
 
jow
尊榮會員


發表:66
回覆:751
積分:1253
註冊:2002-03-13

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-11-30 09:53:42 IP:220.130.xxx.xxx 未訂閱
根據delphi的Help,將Randomize放置在GetRandom()中,似乎比較不太適當 ,Borland建議不要在Loop中重複呼叫Randomize.    Description Randomize initializes the built-in random number generator with a random value (obtained from the system clock). The random number generator should be initialized by making a call to Randomize, or by assigning a value to RandSeed. Do not combine the call to Randomize in a loop with calls to the Random function. Typically, Randomize is called only once, before all calls to Random.
nlmnrke
一般會員


發表:5
回覆:16
積分:4
註冊:2004-11-17

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-11-30 13:13:59 IP:211.23.xxx.xxx 未訂閱
感謝jow 及acqua的熱心指導........ 應該可以解決目前的問題........... 特別謝謝 版主大大
系統時間:2024-04-24 8:06:16
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!