如何使用 Delphi 生成 0 到 15 之間不重複的 N 個隨機數?

發布 科技 2024-02-09
10個回答
  1. 匿名使用者2024-02-05

    帕斯卡中的隨機數。

    隨機數是指理論上沒有規則可遵循的一系列數字,每個數字在指定範圍內出現的概率相等,並且不能用於跟蹤前乙個數字。 一般隨機數生成器的基本原理是:首先,初始化乙個隨機種子,其初始值可以是任意整數; 每次獲取到乙個隨機數時,都會根據隨機種子進行特殊操作,獲取並返回乙個隨機數,然後對隨機種子進行一些操作,改變隨機種子的值。

    這樣,可以生成許多相對隨機的數字,但是具有相同初始值的隨機種子將產生完全相同的隨機序列。

    Pascal 的系統單元提供了兩個與隨機數相關的子程式:randomize 和 random。

    隨機化過程用於初始化隨機種子,其初始值取決於當前系統時鐘。

    隨機函式用於獲取隨機數。

    它有兩種形式的呼叫:

    random,返回乙個介於 0 和 1 之間的隨機實數(不包括 1);

    random(n) 返回乙個介於 0 和 n 之間的隨機整數(不包括 n),其中 n 是單詞整數。

    此外,系統單元中隨機種子變數的識別符號是 randseed,您也可以手動更改。 在資訊學奧林匹克競賽中,隨機數可用於隨機化搜尋、窮竭等演算法,以優化其效能,也可用於在快速排序中選擇關鍵數字,使快速排序演算法的最壞情況沒有固定的對應數字序列。 如果希望使用隨機數的程式對相同的輸入資料具有常量輸出,則可以將 randseed 設定為固定值。

    random(10000)

    立即取出數字後,lz只需要寫乙個函式將數字轉換為字元,並在其前面填寫零即可確定該字元是否已經存在。

    ps:如何判斷,就看你怎麼存,存。

  2. 匿名使用者2024-02-04

    1.前面0的問題是因為(假設你現在輸入5,即num是5),陣列的長度是5,但是隨機數值是random(5+1),也就是說隨機值在0-5之間,總共有6個數字,那麼自然不能取乙個。

    2.改成random(num)時,對於k:=0到i do,我個人覺得應該是k:=0到i-1 do

    3.隨機數演算法有很多簡單的方法,比goto簡單得多,比如最常見的偽演算法。

    a.建立乙個陣列 x[n] 並為每個元素分配乙個值(例如,0-n 之間的隨機數),然後 x[0]=0, x[1]=1 到 x[n]=n;

    b.從 x[0] 到 x[n],隨機交換元素和 x[0-n] 之間的任意數字。

    如果是 delphi2010 或更高版本,則有類似 tdictionary 的東西。

  3. 匿名使用者2024-02-03

    你每次從0到5取6個數字,只儲存其中的5個數字來顯示,一定有乙個數字沒有。

    就像第二次沒有 5 一樣。

    為什麼要使用goto,繼續就可以了。

  4. 匿名使用者2024-02-02

    似乎該程式通常處於無限迴圈中。 要求輸入的 num 不應小於 2,否則程式會出錯。

  5. 匿名使用者2024-02-01

    只需新增判斷,如果您已經有了這個數字,請再拿一次。 直到你找到乙個不重複的。

  6. 匿名使用者2024-01-31

    初始化時將陣列設定為 0。 由於 u for k:=0 to i do 這個地方在迴圈中被推回一位,當它隨機為 0 時,總是檢查 0 是否已經存在,使 0 不可能第一次發生。

    這個地方應該改為 k:=0 到 i-1 do

    改為 l:x:=random(num) 時出現無限迴圈的原因和以前一樣,就是 k:=0 到 i 做。 迴圈持續,僅留下 0 未分配,並且始終檢測到 0。

  7. 匿名使用者2024-01-30

    您好,我是來幫助您解決問題的:

    根據您的需求,我根據您的**進行了優化和改進,實際測試已經通過!

    我將上傳整個測試原始檔!

    其實也可以把這個**做成乙個獨立的功能,這樣就可以復用了!

  8. 匿名使用者2024-01-29

    實際上,不使用這麼多迴圈太複雜了。 你可以參考這篇文章。

  9. 匿名使用者2024-01-28

    1、randseed;隨時發生的“種子”。 如果未賦值,則每次執行的結果隨機序列相同。

    因此,每個呼叫的值必須不同。

    2、randomize;使用當前機器時間作為“種子”初始化隨機數生成器。

    3. random() 從 “seed” 初始化的隨機數開始,開始生成乙個隨機數序列 但是 delphi 中的 random() 產生乙個偽隨機數,即 random() 生成的隨機數在程式的兩次執行中是相同的。 首先執行 randomize,然後 random 是真正的隨機數,即 randomize 初始化隨機數生成器。

    random()

    示例:生成 20-500 之間的隨機數 隨機化;

    20+random(500-30+1);

  10. 匿名使用者2024-01-27

    使用此函式函式 randomrange(const afrom, ato: integer): integer;

相關回答
14個回答2024-02-09

function getsqlserverlist(strings:tstrings):boolean;

該函式的實現方式如下: >>>More

9個回答2024-02-09

3種方式。 1. 更改名稱後,單擊“檔案替換”,瀏覽到檔案位置並單擊“替換”,然後儲存。 >>>More

17個回答2024-02-09

步驟1方法:首先雙擊開啟PhotoshopCS4

檔案 - 新建,將顯示“建立”對話方塊。 寬度和高度自定義 選擇白色作為背景內容,然後單擊確定。 >>>More

12個回答2024-02-09

點選桌面左下角的“開始”-“執行”,然後輸入“DXDIAG”回車,將啟動DirectX診斷工具,您可以在“系統”選項卡下部的“DirectX版本”條目右側看到當前版本號。 >>>More

8個回答2024-02-09

因為你是疊加的,所以它應該是 n+(n-1)+

所以 sum(n-1) 應該被呼叫。 >>>More