2014-01-25 205 views

回答

5

在C++ 11,你可以做這樣的事情:

#include <iostream> 
#include <random> 
#include <chrono> 

int main() 
{ 
    unsigned seed = std::chrono::system_clock::now().time_since_epoch().count(); 
    std::mt19937_64 generator (seed); 
    std::uniform_int_distribution<int> distribution(0, 1); 
    for (int i = 0; i < 100; i++) 
     std::cout << distribution(generator); 
} 

或者做註釋的C風格的建議:

#include <iostream> 
#include <cstdlib> 
#include <ctime> 

int main() 
{ 
    srand(time(0)); 
    for (int i = 0; i < 100; i++) 
     std::cout << rand() % 2; 
} 
+0

1只是想給定指出,所需的結果是二進制的,['bernoulli_distribution'](http://en.cppreference.com/w/cpp/numeric/random/bernoulli_distribution)也是合適的。 – Praetorian

+1

對於許多發生器,您的C風格代碼將產生不斷在1和0之間交替的輸出,因此它絕對是非隨機的。對於一個典型的線性同餘發生器,通常最好保留更多有效位,而不是最低位,就像這樣。 –

+0

@Praetorian那是我的意圖;產生一個隨機的真或假:) –

相關問題