例如,我如何生成一个介于 0 和 1 之间的随机数列表,但让它们平均为 0.8?
我用 C++ 编写了这个小脚本,它会告诉你输出了哪些数字。不过,这个问题与 C++ 并不真正相关。
#include <iostream>
#include <random>
#include <time.h>
int main(int argCount, char** argVector) {
std::cout << "Generating Randoms" << std::endl;
float avarage = 0.F;
srand(rand() + (int) time(NULL));
float ceiling = 0;
float bottom = 1;
for(unsigned int i = 0; i < 1000000; i++) {
float random = (float) (rand() % 101) / 100;
if(random > ceiling)
ceiling = random;
else if(random < bottom)
bottom = random;
avarage += random;
}
std::cout << "Avarage: " << avarage/1000000 << std::endl;
std::cout << "Ceiling: " << ceiling << std::endl;
std::cout << "Bottom: " << bottom << std::endl;
return 0;
}
这输出:
Generating Randoms
Avarage: 0.499287
Ceiling: 1
Bottom: 0
我希望上限和下限仍为 0 和 1,但能够更改平均值。该算法最好也应该是有效的。
再一次,我现在发布 C++ 代码,但任何语言都可以。