module dopt.cpu.random; import dopt.core; import dopt.cpu; package { void initialize() { import std.functional : toDelegate; registerCPUKernel("uniform", new CPUKernelDelegate(toDelegate(&uniform))); } } private { void uniform(Operation op, const(void[])[] inputs, void[] output) { import std.random : uniform01; float[] arr = cast(float[])output; foreach (ref v; arr) v = uniform01!float + float.epsilon; // by default CUDA's random is 0-1 including 1 but not zero, D is 0-1 including 0 but not one. } }