@@ -883,26 +883,31 @@ if (ss == SwapStrategy.unstable && isRandomAccessRange!Range
883
883
884
884
@safe unittest
885
885
{
886
- import std.random : uniform;
886
+ import std.random : Random , uniform, unpredictableSeed ;
887
887
888
- auto a = new int [](uniform(0 , 100 ));
889
- foreach (ref e; a)
890
- {
891
- e = uniform(0 , 50 );
892
- }
893
- auto pieces = partition3(a, 25 );
894
- assert (pieces[0 ].length + pieces[1 ].length + pieces[2 ].length == a.length);
895
- foreach (e; pieces[0 ])
896
- {
897
- assert (e < 25 );
898
- }
899
- foreach (e; pieces[1 ])
900
- {
901
- assert (e == 25 );
902
- }
903
- foreach (e; pieces[2 ])
888
+ immutable uint [] seeds = [3923355730 , 1927035882 , unpredictableSeed];
889
+ foreach (s; seeds)
904
890
{
905
- assert (e > 25 );
891
+ auto r = Random (s);
892
+ auto a = new int [](uniform(0 , 100 , r));
893
+ foreach (ref e; a)
894
+ {
895
+ e = uniform(0 , 50 );
896
+ }
897
+ auto pieces = partition3(a, 25 );
898
+ assert (pieces[0 ].length + pieces[1 ].length + pieces[2 ].length == a.length);
899
+ foreach (e; pieces[0 ])
900
+ {
901
+ assert (e < 25 );
902
+ }
903
+ foreach (e; pieces[1 ])
904
+ {
905
+ assert (e == 25 );
906
+ }
907
+ foreach (e; pieces[2 ])
908
+ {
909
+ assert (e > 25 );
910
+ }
906
911
}
907
912
}
908
913
@@ -3500,24 +3505,31 @@ private T[] randomArray(Flag!"exactSize" flag = No.exactSize, T = int)(
3500
3505
{
3501
3506
import std.algorithm.comparison : max, min;
3502
3507
import std.algorithm.iteration : reduce;
3503
- import std.random : uniform;
3508
+ import std.random : Random , uniform, unpredictableSeed ;
3504
3509
3505
3510
debug (std_algorithm) scope (success)
3506
3511
writeln(" unittest @" , __FILE__ , " :" , __LINE__ , " done." );
3507
3512
3508
- int [] a = new int [uniform(1 , 10000 )];
3509
- foreach (ref e; a) e = uniform(- 1000 , 1000 );
3510
- auto k = uniform(0 , a.length);
3511
- topN(a, k);
3512
- if (k > 0 )
3513
+ immutable uint [] seeds = [90027751 , 2709791795 , 1374631933 , 995751648 , 3541495258 , 984840953 , unpredictableSeed];
3514
+ foreach (s; seeds)
3513
3515
{
3514
- auto left = reduce! max(a[0 .. k]);
3515
- assert (left <= a[k]);
3516
- }
3517
- if (k + 1 < a.length)
3518
- {
3519
- auto right = reduce! min(a[k + 1 .. $]);
3520
- assert (right >= a[k]);
3516
+ auto r = Random (s);
3517
+
3518
+ int [] a = new int [uniform(1 , 10000 , r)];
3519
+ foreach (ref e; a) e = uniform(- 1000 , 1000 , r);
3520
+
3521
+ auto k = uniform(0 , a.length, r);
3522
+ topN(a, k);
3523
+ if (k > 0 )
3524
+ {
3525
+ auto left = reduce! max(a[0 .. k]);
3526
+ assert (left <= a[k]);
3527
+ }
3528
+ if (k + 1 < a.length)
3529
+ {
3530
+ auto right = reduce! min(a[k + 1 .. $]);
3531
+ assert (right >= a[k]);
3532
+ }
3521
3533
}
3522
3534
}
3523
3535
0 commit comments