2016-05-23 121 views
-4

我知道在C中我們可以使用rand()生成隨機數並使用srand()來設置種子。 但是我現在想要一個獨立的隨機生成器(如變量,或定義一個類)。C中的獨立隨機生成器


獨立隨機數發生器我的意思是:在程序中有多個部分使用隨機性。如果我使用srand()修改某個部分的種子,其他部分的隨機性會受到影響。這就是爲什麼我想要一個獨立的結構來控制隨機性的原因。 我看到這個:

unsigned long next=1; 
int rand(void) /* NOT RECOMMENDED (see text) */ 
{ 
    next = next*1103515245 + 12345; 
    return (unsigned int)(next/65536) % 32768; 
} 
void srand(unsigned int seed) 
{ 
    next=seed; 
} 

有沒有更好的方法?

+1

「獨立隨機發生器」是什麼意思?請詳細說明。 –

+1

您的研究沒有在這個備受爭議的話題上發現任何有用的東西嗎? –

+0

如果你想要實際的隨機數,你將需要昂貴的硬件。 –

回答

0

你所描述的概念有時被稱爲隨機流隨機同步

雖然你很容易可以建立你自己的東西,我建議Gnu Scientific Library,其中有許多不同的高品質的PRNG,也是一個很好的抽象接口,這是很容易在這個隨機流定形的使用。

上面的鏈接爲您提供了一個示例,其中創建了一個RNG對象供進一步使用。在你的情況下,你會建立多個隨機流,並在代碼的不同部分使用它們。因此,如果恰好這個隨機流被調用(並且獨立於其他的用法),每個隨機流只被修改(內部狀態)。