On 08.06.2024 16:19, Eric P626 wrote:
I managed to create a random number generator using the following code:

~~~
auto rng = Random(42);
//....
uniform(0,10,rng);
~~~

Now I want to seed the generator using system time. I looked at Date & time functions/classes and systime functions/classes. The problem is that they all require a time zone. But I don't need a time zone since there is no time zone. I just want the number of seconds elapsed since jan 1st 1970. In other words, the internal system clock value.


```d
import std;

void main()
{
    {
        auto rng = Random(42);
        auto result = generate!(() => uniform(0, 10, rng))().take(7);
        // the same random numbers sequence
        assert (result.equal([2, 7, 6, 4, 6, 5, 0]));
    }

    {
        const seed = castFrom!long.to!uint(Clock.currStdTime);
        auto rng = Random(seed);
        auto result = generate!(() => uniform(0, 10, rng))().take(7);
        // new random numbers sequence every time
        result.writeln;
    }
}
```

Reply via email to