日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Randomize Random

發布時間:2024/1/18 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Randomize Random 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在學習ProcessMessage函數時候看到了這個代碼,沒用過Randomize函數,所以順便學習學習;

procedure TForm1.Button1Click(Sender: TObject);varI, J, X, Y: Word; beginI := 0;J := 0;while I < 64000 dobeginRandomize;while J < 64000 dobeginY := Random(J);Inc(J);end;X := Random(I);Inc(I);end;Canvas.TextOut(10, 10, 'The Button1Click handler is finished');end;

這個函數在幫助里面的原說明如下:

Initializes the random number generator with a random value.

前面的Initializes the random number generator 應該翻譯為:初始化隨機數產生器? 這應該是沒錯的,但with a random value 怎么翻譯呢,用一個隨機值?接著往下看,下面還有個Y:=Random(J);會不會跟這個函數有關系?繼續查random()函數:

Generates random numbers within a specified range.//翻譯為:在指定的范圍內產生隨機數

Delphi syntax:

function Random [ ( Range: Integer) ];

下面還有更詳細的說明:

In Delphi code, Random returns a random number within the range 0 <= X < Range. If Range is not specified, the result is a real-type random number within the range

0 <= X < 1.

?

到此,我還是看不出來這兩個函數有什么關系,再看一下Randomize 的description:

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.

{Randomize 用一個隨機值來初始化內置的隨即數產生器(這個隨機值來自于系統時鐘)。隨即數產生器通過調用Randomize函數或指定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.

{不要在同一層循環內同時調用Randomize和Random函數。典型的應用是,在所有的random函數前調用一次Randomize}

?

我的理解是,隨即數的產生是要根據系統時鐘進行變化的,randomize的作用就是將 the built-in random number generator 和系統時鐘掛鉤,接下來的random函數才會起作用。

?

靠理論不行,寫個例子:

procedure TForm1.bt_3Click(Sender: TObject); vari:Integer; begin//Randomize;Memo_1.Lines.Clear;for i := 1 to 100 doMemo_1.Lines.Add(IntToStr(Random(100))); end;

注銷randomize,運行,沒什么問題啊,照樣變化!
把注銷去掉,運行,也能變化!
怎么回事,d7合二為一了?
放到d5下,還是一樣!
怎么回事?
到網上一查,是去掉randomize后,運行幾次的隨即數取值都相同,而不是在一次運行期間的數據變化不變。仔細看了一下,果然如此。
到此,這兩個函數我搞明白了。
明白是明白了,可是,以前都是直接寫Random沒有randomize!汗!還好那個數據的重復率幾乎為0,要不麻煩大了。
以后還是多看看書,多看看別人的代碼。

總結

以上是生活随笔為你收集整理的Randomize Random的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。