2014-02-07 31 views
1

我有一些舊遊戲DopeWars的源代碼,我試圖將它轉換爲OO Python以獲得一些有趣的練習。SysRandom在C中的含義

我想弄清楚他們用來生成不同藥物的半隨機價格的算法。

這是相關代碼的副本。

static void makeDrugPrices (int leaveout) 
{ 

    int i, j; 

    drugPrices [0] = 1000 + SysRandom (0) % 3500; 
    drugPrices [1] = 15000 + SysRandom (0) % 15000; 
    drugPrices [2] = 10 + SysRandom (0) % 50; 
    drugPrices [3] = 1000 + SysRandom (0) % 2500; 
    drugPrices [4] = 5000 + SysRandom (0) % 9000; 
    drugPrices [5] = 300 + SysRandom (0) % 600; 
    drugPrices [6] = 600 + SysRandom (0) % 750; 
    drugPrices [7] = 70 + SysRandom (0) % 180; 

    for (i = 0; i < leaveout; i++) 
    { 
     j = SysRandom (0) % 8; 
     drugPrices [j] = 0; 
    } 
} 

唯一的問題是我無法在任何地方在線找到SysRandom的任何文檔。它在代碼中使用的唯一其他地方與此處使用的方式完全相同。似乎沒有任何實例或引用涉及SysRandom的任何外部代碼。

我對C不是很熟悉,所以有可能我錯過了一些東西。如果你想要整個源代碼,我可以提供。

謝謝。

+0

也許所有的SysRandom()都會返回一個隨機數字0作爲它的種子? –

+0

我的猜測是它調用rand(),其中參數是最大範圍,除非參數爲0,則使用默認值。 – this

+0

它看起來像返回一個32位隨機數。操作'SysRandom(0)%3500'的結果是一個介於0到3500之間的隨機數。在過去的日子裏,C函數rand()只在Windows上產生一個16位的隨機數,所以在大多數應用中它是沒有用的。 – markgz

回答

1

在任何C標準庫中都沒有函數SysRandom,所以它顯然來自您的項目本身或其某個依賴關係。你必須在源代碼中找到它,看看它是如何定義的。