libsodium
库有一个函数
uint32_t randombytes_uniform(const uint32_t upper_bound);
但显然这会返回一个无符号整数。我能以某种方式使用它在 [-a,a]
范围内生成均匀分布的随机 double
其中 a
也是由用户?我特别关注均匀分布/无偏的结果,所以这就是我想使用 libsodium
库的原因。
最佳答案
const uint32_t mybound = 1000000000; // Example
const uint32_t x = randombytes_uniform(mybound);
const double a = 3.5; // Example
const double variate = a * ( (2.0 * x / mybound) - 1);
关于c - 如何使用范围 [-a,a] 中的 libsodium 在 C 中生成均匀分布的随机 double ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55850871/