2016-11-09 87 views
1

我用default_random_engine来生成不同数字的列表,但它们碰巧是一样的。我想知道产生不同的数字吗?我知道srand()呢。但是,我可以使用这个默认引擎吗?如何使用uniform_real_distribution生成不同的数字?

default_random_engine engine{ static_cast<unsigned int>(time(0)) }; 
uniform_real_distribution<double>randomNumber{ 50,100 }; 
for(int i=0; i<10;i++){ 
    a[i]= randomNumber(engine); 
    } 
+0

当你说他们都是一样的,你的意思是所有的数字在一次运行中是相同的,或者你每次都得到相同的一组数字? –

+1

不要使用'time(0)'种子,用'operator()'种子关闭'std :: random_device'的单个实例,无论哪种方式,理想情况下,只对您的整个过程种子一次。 – WhozCraig

+0

@PaulRooney每次我生成一个不同的随机数组。在这个数组中,碰巧有相同的数字(元素)。我想知道如何让这个数组中的每个元素都是唯一的? –

回答

2

该行为是针对随机数生成器设计的。您需要在启动程序时为随机生成器设置“种子”。

如果你有C++扩展@WhozGraig建议他们最好。这是非常草率的,但很多人使用time()函数每次运行程序时都得到一个不同的数字。

相关问题