This question already has answers here:
Random seed at runtime
                                
                                    (3个答案)
                                
                        
                                3年前关闭。
            
                    
在我的程序中,我有一个函数return_random_vector(),它接受一组数字,例如1,2,3,4,5,并返回数字的随机重排,例如2,5,1,4,3

为此,我设置了种子srand(time(NULL))。对于我的程序,我希望能够再次使用1,2,3,4,5调用此函数并获得它们的另一个重新排列,例如3,1,4,5,2

有没有一种方法可以设置srand()以便重置种子?

最佳答案

要获得其他设置,您可以再次调用return_random_vector(),而不必在两者之间调用srand()

在第一次调用srand((unsigned)time(NULL))之后立即调用return_random_vector()可能会生成相同的集合,因为time()可能会返回相同的值,即经过的时间(以秒为单位)。

因此,实际上您会将种子重置为与第一次调用之前相同的值。并将种子设置为相同的值将再次生成相同的随机数集。

您还可以查看std::shuffle (C++11)

关于c++ - 在程序c++中更改随机种子,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34890618/

10-14 13:36