簡單的問題:
我想生成從 1 到 15 的亂數,包括 15,但我在生成的系列中不斷重復。
我希望能夠獲得從 1 到 15 的每個數字的隨機順序。在 Delphi 編程語言中。
uj5u.com熱心網友回復:
使用 Fisher-Yates 演算法很容易實作這一點(如評論中所述):
TYPE TIntArr = TArray<Integer>;
FUNCTION RandomList(Min,Max : Integer) : TIntArr;
VAR
I,J,K : Integer;
BEGIN
SetLength(Result,SUCC(Max-Min));
FOR I:=Min TO Max DO Result[I-Min LOW(Result)]:=I;
FOR I:=HIGH(Result) DOWNTO SUCC(LOW(Result)) DO BEGIN
J:=RANDOM(I);
K:=Result[I]; Result[I]:=Result[J]; Result[J]:=K
END
END;
上面的函式將為您提供一個動態整數陣列,其中包含 Min 和 Max(包括兩者)之間的亂數字順序。
請記住在主表單的 FormCreate 中呼叫 RANDOMIZE 以將 PRNG(偽亂數生成器)初始化為相當隨機的值。如果你不這樣做,你每次都會得到相同的串列......
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/513246.html
標籤:德尔福随机的重复
上一篇:DelphiXE8IndyOpenSSL,在Windows11更新后出現錯誤14077410SSL23_GET_SERVER_HELLO
下一篇:計算間隔
