On Thursday, 22 December 2022 at 16:23:16 UTC, jwatson-CO-edu
wrote:
I am confused about why Program 1 produces random output but
Program 2 does not.
The code you have posted as "Program 2" is incomplete, and cannot
be compiled as-is. I have made some changes in order to get it to
compile and produce useful output, resulting in the following
program:
#### sparrow_core.d
```d
module sparrow_core;
import std.random;
Mt19937 rnd; // Randomness
void init_random(){
// Seed the RNG with the clock
rnd = Random( unpredictableSeed );
}
double rand01(){
// Uniform random sampling in [0,1)
return uniform( 0.0, 1.0, rnd);
}
void init_SPARROW(){
// Populate necessary global structures
init_random(); // --- RNG
}
```
#### app.d
```d
module app;
import sparrow_core;
import std.stdio;
void main(){
init_SPARROW();
foreach (i; 0 .. 6)
writeln(rand01());
}
```
When I compile and run the above program, I get the following
output:
```
0.289729
0.39377
0.693163
0.232496
0.388511
0.840994
```
So, as far as I can tell, there is nothing wrong with your code,
and the random number generator is working as intended.
Most likely you have made a mistake somewhere in the part of the
code that you did not post, and that mistake is what's causing
the lack of randomness you observed in the output.