Random是主要产生伪随机数的类,它主要包括两个构造函数(无参构造函数和带一个Int32类型参数的构造函数),无参构造函数主要采用系统时间作为随机种子,带参数的构造函数需要自己去指定随机种子。而在很短的时间内生成大量随机数的时候,由于时间相当短暂,很大的可能性一部分随机数生成时,取到作为随机种子的系统时间相同,因此产生出来的随机数就相同了。
1)从逻辑上解决就是延长他的时间,可以加个延时,或者加大他的数据量都可以把时间延长。
2)就是再另一种随机一次,先随机取得0到i之间的一个数做数组的下标,再把取得这个下标对应的数与arr[i]调换,这样取得的数就是真正随机的了。。
for(int i = n - 1; i >= 0 ; i -- ) swap(arr[i], arr[rand() % (i + 1)])
本文来自博客园,作者:阿霖找BUG,转载请注明原文链接:https://www.cnblogs.com/lin-07/p/17894996.html